
Foto oleh Duc Van di Unsplash
Kecepatan Bukanlah Bagian Tersulit dalam CI CD
M. Zakyuddin Munziri
@zakiego
Ditulis asli dalam English.
Untuk waktu yang lama, tim percaya bahwa CI CD yang lebih cepat akan menyelesaikan sebagian besar masalah delivery.
Pipeline terasa lambat. Build memakan waktu terlalu lama. Deploy mengantri. Jadi kami mengoptimalkan kecepatan.
Kami memparalelkan job. Menambahkan caching. Auto deploy saat merge.
CI CD menjadi cepat.
Shipping masih terasa menakutkan.
Itulah momen ketika semuanya menjadi jelas. Kecepatan bukanlah bagian tersulitnya.
Pipeline yang lebih cepat tidak menghilangkan keraguan
Bahkan dengan pipeline cepat, engineer masih berhenti sejenak sebelum shipping.
Rollback terasa berisiko. Insiden masih menyebabkan stres. Tombol deploy diklik dengan hati-hati.
Tidak ada yang secara teknis memblokir rilis. Yang memblokirnya adalah keraguan.
CI CD cepat hanya berarti kode bergerak cepat melalui sistem. Itu tidak berarti sistem aman untuk diubah.
Kecepatan CI CD menyelesaikan eksekusi bukan kepercayaan diri
CI CD hebat dalam eksekusi.
Ia mem-build, mengetes, memaketkan, dan men-deploy secara andal dan berulang. Sebagian besar tim bisa mencapai level ini dengan usaha yang cukup.
Kepercayaan diri itu berbeda.
Kepercayaan diri adalah mengetahui apa yang terjadi ketika ada yang salah.
Seberapa besar dampaknya. Seberapa cepat sistem memberitahu Anda. Seberapa cepat Anda bisa menghentikannya.
Kecepatan saja tidak menjawab semua itu.
Cek hijau tidak menciptakan kepercayaan
Ini adalah jebakan umum.
Semua cek hijau. Tes lulus. Pipeline sukses.
Tetap saja, tidak ada yang merasa enak soal shipping.
Cek hijau memberitahu Anda aturan lulus. Mereka tidak memberitahu Anda bagaimana sistem berperilaku di bawah kondisi nyata.
Kepercayaan tidak dibangun dengan lulus cek. Ia dibangun dengan melihat kegagalan dibendung dan dipulihkan.
Apa yang sebenarnya membuat shipping terasa aman
Hal-hal berubah ketika kami berhenti bertanya bagaimana membuat CI CD lebih cepat dan mulai bertanya bagaimana membuat shipping terasa lebih aman.
Beberapa hal lebih penting daripada kecepatan mentah.
Jalur rollback yang dilatih, bukan hanya didokumentasikan.
Feature flags digunakan sebagai sakelar pengaman, bukan hanya alat peluncuran.
Environment preview yang membuat perubahan terlihat lebih awal.
Feedback loop yang memunculkan masalah sebelum pengguna mengeluh.
Tidak ada dari ini yang kompleks. Semua ini mengurangi ketidakpastian.
Kepercayaan adalah properti sistem
Ini adalah pergeseran pola pikir terbesar.
Kepercayaan tidak hidup di satu alat atau satu pipeline.
Jika rollback lambat, kepercayaan rendah. Jika alert berisik, kepercayaan rendah. Jika kepemilikan tidak jelas, kepercayaan rendah.
Otomasi memperkuat sistem yang sudah Anda miliki. Jika sistem rapuh, CI CD yang lebih cepat hanya membuat kegagalan tiba lebih cepat.
Apa yang tidak berubah
Engineer masih membuat keputusan.
Penilaian (judgement) masih penting. Tradeoff masih ada. Edge case masih terjadi.
CI CD membantu memindahkan kode. Ia tidak menghapus tanggung jawab.
Kepercayaan diri datang dari mengetahui sistem akan membantu Anda pulih alih-alih menghukum Anda.
Penutup
Kecepatan di CI CD adalah taruhan dasar (table stakes).
Pekerjaan sebenarnya adalah membangun sistem yang berperilaku dapat diprediksi ketika ada yang salah.
Jika Anda mengoptimalkan hanya untuk kecepatan, tim mungkin ship lebih cepat tapi merasa lebih buruk.
Jika Anda mengoptimalkan untuk kepercayaan, kecepatan mengikuti secara alami.
Kecepatan tidak pernah menjadi bagian yang sulit.


