5 perangkap umum CI / CD — dan cara menghindarinya

Devops mungkin salah satu istilah paling kabur dalam pengembangan perangkat lunak, tetapi sebagian besar dari kita setuju bahwa lima aktivitas membuat devops seperti itu: integrasi berkelanjutan, pengiriman berkelanjutan, infrastruktur cloud, otomatisasi pengujian, dan manajemen konfigurasi. Jika Anda melakukan lima hal ini, Anda melakukan devops. Jelaslah, kelima hal itu penting untuk menjadi benar, tetapi semuanya terlalu mudah untuk salah. Secara khusus, integrasi berkelanjutan dan pengiriman berkelanjutan (CI / CD) mungkin merupakan gerakan pengembang yang paling sulit untuk dikuasai.

Integrasi berkelanjutan (CI) adalah proses di mana pengembang dan penguji secara kolaboratif memvalidasi kode baru. Secara tradisional, pengembang menulis kode dan mengintegrasikannya sebulan sekali untuk pengujian. Itu tidak efisien — kesalahan dalam kode dari empat minggu yang lalu dapat memaksa pengembang untuk merevisi kode yang ditulis satu minggu yang lalu. Untuk mengatasi masalah tersebut, CI bergantung pada otomatisasi untuk mengintegrasikan dan menguji kode secara terus menerus. Tim scrum menggunakan kode komit CI setidaknya setiap hari, sementara sebagian besar dari mereka melakukan kode untuk setiap perubahan yang diperkenalkan.

Pengiriman berkelanjutan (CD) adalah proses terus menerus membuat artefak yang dapat dilepaskan. Beberapa perusahaan merilis ke pengguna sekali atau bahkan beberapa kali sehari, sementara yang lain merilis perangkat lunak dengan kecepatan yang lebih lambat karena alasan pasar. Bagaimanapun, kemampuan untuk melepaskan diuji terus menerus. Terus menerus penyebaran ini dimungkinkan berkat lingkungan cloud. Server disiapkan sedemikian rupa sehingga Anda dapat menerapkan ke produksi tanpa mematikan dan memperbarui server secara manual.

Jadi, CI / CD adalah proses untuk pengembangan berkelanjutan, pengujian, dan pengiriman kode baru. Beberapa perusahaan seperti Facebook dan Netflix menggunakan CI / CD untuk menyelesaikan 10 rilis atau lebih per minggu. Perusahaan lain berjuang untuk mencapai kecepatan itu karena mereka menyerah pada satu atau lebih dari lima jebakan yang akan saya bahas selanjutnya.

Kesulitan CI / CD # 1: Mengotomatiskan proses yang salah terlebih dahulu

Perangkap ini cenderung menyerang organisasi yang beralih dari pengembangan air terjun ke pengembang. Organisasi baru memiliki keuntungan dalam mengimplementasikan CI / CD dari awal. Perusahaan yang ada harus melakukan perjalanan secara bertahap dari pengembangan manual ke pengembangan yang sangat otomatis. Transisi penuh dapat memakan waktu beberapa bulan, yang berarti Anda harus berulang dalam mengadopsi CI / CD.

Saat Anda bertanya, "Apakah ini perlu diotomatiskan sekarang?" jalankan melalui daftar periksa berikut:

  1. Seberapa sering proses atau skenario tersebut diulang?
  2. Berapa lama prosesnya?
  3. Ketergantungan orang dan sumber daya apa yang terlibat dalam proses? Apakah mereka menyebabkan penundaan pada CI / CD?
  4. Apakah prosesnya rawan kesalahan jika tidak otomatis?
  5. Apa urgensi untuk membuat proses otomatis?

Dengan menggunakan daftar periksa ini, Anda dapat memprioritaskan langkah-langkah dalam implementasi CI / CD. Pertama dan terpenting, otomatisasi proses kompilasi kode. Idealnya, Anda akan mengintegrasikan kode beberapa kali sehari (1). Secara manual, prosesnya memakan waktu beberapa menit hingga beberapa jam (2). Itu menghentikan keluaran sampai kompilator menyelesaikan tugas (3). Ia juga rentan terhadap kesalahan manusia (4), dan karena CI / CD adalah mimpi pipa tanpa integrasi otomatis, hal ini mendesak (5).

Kami dapat menjalankan daftar periksa yang sama pada pengujian. Saat Anda beralih ke CI / CD, Anda mungkin bertanya-tanya: Haruskah kita mengotomatiskan pengujian fungsional atau pengujian UI terlebih dahulu? Keduanya akan diulang setidaknya sekali sehari (1). Keduanya dapat memakan waktu dua hingga tiga jam untuk aplikasi berukuran sedang (2). Tapi mereka melibatkan banyak ketergantungan (3). Jika Anda mengotomatiskan pengujian fungsional, Anda mungkin tidak harus sering memperbarui skrip otomatisasi. UI, di sisi lain, sering berubah dan karenanya membutuhkan perubahan skrip yang sering. Meskipun keduanya rawan error (4), Anda harus memprioritaskan pengujian fungsional sebelum pengujian UI untuk memanfaatkan resource Anda dengan sebaik-baiknya (5).

Mari lakukan ini sekali lagi dengan proses pengaturan lingkungan. Skenario ini hanya sering diulang jika Anda sedang dalam proses perekrutan atau mengalami perubahan besar (1). Ini adalah proses yang memakan waktu yang bisa memakan waktu beberapa jam jika tidak berhari-hari (2). Anggota tim baru tidak dapat melakukan apa pun yang membantu tanpa lingkungan, jadi jelas ada ketergantungan dan penundaan (3). Saya tidak akan mengatakan bahwa prosesnya rawan kesalahan (4), jadi apakah masih mendesak (5)? Saya condong ke arah ya, tetapi saya masih memprioritaskan integrasi dan pengujian fungsional terlebih dahulu.

Tidak ada yang namanya overautomating. Jika Anda memiliki sumber daya tak terbatas, Anda akan mengotomatiskan segala kemungkinan. Meskipun demikian, Anda tidak dapat mencapai otomatisasi pengujian total. Terkadang Anda dapat memecah tugas menjadi segmen yang lebih kecil dan mengotomatiskannya dalam tambalan. Terkadang Anda hanya perlu mendokumentasikan proses secara detail dan menjalankannya secara manual.

Masalah CI / CD # 2: Penerapan berkelanjutan yang membingungkan untuk pengiriman berkelanjutan

Penerapan berkelanjutan adalah konsep bahwa setiap perubahan yang dibuat dalam basis kode akan segera diterapkan ke produksi jika hasil pipeline berhasil. Ini menakutkan bagi sebagian besar organisasi karena perubahan produk yang cepat dapat membuat pengguna takut.

Perusahaan percaya bahwa jika mereka tidak mempraktikkan penerapan berkelanjutan, mereka tidak melakukan CD. Mereka gagal membedakan antara penerapan berkelanjutan dan pengiriman berkelanjutan.

Pengiriman berkelanjutan adalah konsep bahwa setiap perubahan pada basis kode melewati pipa hingga titik penerapan ke lingkungan nonproduksi. Tim menemukan dan menangani masalah dengan segera, bukan nanti ketika mereka berencana untuk merilis basis kode.

Basis kode selalu pada tingkat kualitas yang aman untuk dirilis. Kapan harus melepaskan basis kode ke produksi adalah keputusan bisnis.

Sementara penerapan berkelanjutan meresahkan sebagian besar organisasi, pengiriman berkelanjutan beresonansi dengan mereka. Pengiriman berkelanjutan memberi mereka kendali atas peluncuran produk, fungsionalitas, dan faktor risiko. Ada waktu untuk pengujian alfa, untuk pelanggan beta, untuk pengguna awal, dan seterusnya.

Masalah CI / CD # 3: Kurangnya dasbor dan metrik yang berarti

Dalam implementasi CI / CD, tim scrum dapat membuat dasbor sebelum anggota mengetahui apa yang perlu mereka lacak. Akibatnya, tim menjadi mangsa kesalahan logis: "Ini adalah metrik yang kami miliki, jadi itu pasti penting." Sebagai gantinya, lakukan penilaian progresif sebelum mendesain dasbor.

Anggota organisasi TI yang berbeda, dan bahkan berbagai anggota tim scrum, memiliki prioritas yang berbeda. Misalnya, orang-orang di pusat operasi jaringan (NOC) menyukai indikator merah, kuning, dan hijau. Dasbor lampu lalu lintas semacam itu memungkinkan staf NOC membedakan masalah tanpa membaca teks yang padat atau membebani kemampuan analitis mereka. Lampu lalu lintas membantu membuat ratusan server dapat dikelola.

Anda mungkin tergoda untuk menggunakan dasbor lampu lalu lintas untuk CI / CD juga. Hijau, kita berada di jalur yang benar. Kuning, kami keluar jalur, tapi kami punya rencana untuk mengatasinya. Merah, kita keluar jalur dan sepertinya perlu mengubah tujuan kita.

Dasbor tersebut mungkin berguna bagi master scrum, tetapi bagaimana dengan VP pengembangan atau CTO? Jika tim scrum memiliki 350 jam kerja ke depan untuk sprint dua minggu, dan 10 anggotanya bertanggung jawab untuk masing-masing 35 jam, mereka akan menerima sejumlah poin cerita yang sesuai. Manajemen tingkat atas mungkin kurang tertarik pada status poin cerita dan lebih ingin tahu tentang tingkat "burndown": kecepatan penyelesaian tugas. Apakah anggota tim membawa beban mereka? Seberapa cepat? Apakah mereka meningkat seiring waktu?

Sayangnya, tingkat burndown bisa menyesatkan jika berbagai pemangku kepentingan tidak memahami kebiasaan yang disepakati tim scrum. Beberapa tim membakar poin lebih awal saat mereka pergi. Yang lain menunggu sampai mendekati akhir sprint untuk membakar poin terbuka. Dasbor harus memperhitungkannya.      

Jika Anda dapat menilai data apa yang diinginkan semua orang dan membuat narasi standar untuk arti data tersebut, Anda dapat merancang dasbor yang berguna. Tapi jangan terobsesi dengan substansi dengan mengorbankan penampilan. Tanyakan bagaimana pemangku kepentingan menginginkannya terlihat. Apakah grafik, teks, atau angka adalah yang terbaik?

Ini adalah pertimbangan untuk diselidiki dalam penilaian progresif. Mereka menggambarkan betapa rumitnya membuat dasbor CI / CD yang berguna — dan membuat semua orang senang. Terlalu sering, anggota tim yang paling vokal membajak proses tersebut, dan yang lain merasa frustrasi karena dasbor hanya memenuhi preferensi satu orang. Dengarkan semuanya.  

Jebakan CI / CD # 4: Kurangnya koordinasi antara integrasi berkelanjutan dan pengiriman berkelanjutan

Jebakan ini membawa kita kembali ke definisi konsensus devops, yang menyatakan bahwa integrasi berkelanjutan dan pengiriman berkelanjutan adalah dua item yang berbeda. CI memasukkan CD. Menerapkan pipeline integrasi berkelanjutan yang layak dan sistem pengiriman berkelanjutan penuh membutuhkan waktu berbulan-bulan dan memerlukan kolaborasi. Jaminan kualitas, tim pengembang, insinyur operasi, master scrum — semua harus berkontribusi. Mungkin aspek tersulit dari CI / CD adalah faktor manusia ini daripada tantangan teknis yang telah kita diskusikan. Sama seperti Anda tidak dapat memprogram hubungan yang sehat antara dua orang, Anda tidak dapat mengotomatiskan kolaborasi dan komunikasi.

Untuk mengukur tingkat koordinasi ini, bandingkan proses CI / CD Anda dengan yang terbaik dalam bisnis ini. Perusahaan seperti Netflix dapat menyelesaikan integrasi, pengujian, dan pengiriman dalam hitungan dua hingga tiga jam. Mereka membangun sistem yang meneruskan kode dari tangan ke tangan tanpa keraguan dan diskusi. Tidak, ini tidak 100 persen otomatis karena itu tidak mungkin dengan teknologi saat ini.

Jebakan CI / CD # 5: Menyeimbangkan frekuensi menjalankan pekerjaan integrasi berkelanjutan dan pemanfaatan sumber daya

Pekerjaan integrasi berkelanjutan seharusnya dipicu untuk setiap perubahan yang dimasukkan dalam kode. Pekerjaan yang berhasil memungkinkan perubahan terjadi sementara kegagalan menolak perubahan. Ini mendorong pengembang untuk memeriksa potongan kode yang lebih kecil, memicu lebih banyak build dalam sehari. Namun, pekerjaan integrasi berkelanjutan yang tidak perlu menghabiskan sumber daya, yang membuang waktu dan uang.

Karena proses ini melibatkan banyak pemanfaatan sumber daya (CPU, daya, waktu), perangkat lunak harus dipecah menjadi komponen yang lebih kecil untuk membuat pipeline yang berjalan lebih cepat. Atau pekerjaan integrasi berkelanjutan harus dirancang untuk check-in batch yang pertama kali diuji secara lokal. Tujuannya adalah untuk menemukan keseimbangan antara frekuensi pelaksanaan pekerjaan integrasi berkelanjutan dan pemanfaatan sumber daya.

Jaga agar tujuan tetap terlihat

Saat kita menggali perangkap CI / CD — lengkap dengan semua terminologi esoteriknya — mudah untuk melupakan mengapa hal ini penting. Pada akhirnya, CI / CD sangat penting karena memenuhi tujuan bisnis.

Para eksekutif teknologi tahu bahwa evolusi berkelanjutan, perbaikan cepat, dan hasil berkualitas menciptakan dan mempertahankan pelanggan. Mereka tahu bahwa rilis yang gagal mengundang gada ke ulasan App Store, dan mendapatkan kembali ulasan yang tinggi lebih sulit daripada menyimpannya. Devops mungkin menciptakan pengalaman kerja yang lebih baik untuk tim Anda, tetapi bukan itu alasan perusahaan menerapkan devops.

Sederhananya, perangkap CI / CD layak untuk ditinjau karena miliaran dolar dipertaruhkan. Meskipun saya tidak menyarankan Anda menambahkan ticker saham atau pelacak ulasan App Store ke dasbor CI / CD Anda, saya sangat menyarankan Anda untuk tetap mengetahui hal ini. Banyak hal tergantung pada detail CI / CD.

Zubin Irani adalah salah satu pendiri dan CEO cPrime, sebuah konsultan layanan lengkap yang menerapkan transformasi gesit dan memberikan solusi tangkas untuk lebih dari 50 perusahaan Fortune 100 dan banyak perusahaan terbesar di Silicon Valley.

Forum Teknologi Baru menyediakan tempat untuk mengeksplorasi dan mendiskusikan teknologi perusahaan yang sedang berkembang secara mendalam dan luas. Pemilihannya subjektif, berdasarkan pilihan teknologi yang kami yakini penting dan paling menarik bagi pembaca. tidak menerima jaminan pemasaran untuk publikasi dan berhak untuk mengedit semua konten yang dikontribusikan. Kirim semua pertanyaan ke [email protected]