5 perangkap biasa CI / CD - dan cara menghindarinya

Peranti mungkin merupakan salah satu istilah paling tidak enak dalam pembangunan perisian, tetapi kebanyakan kita bersetuju bahawa lima aktiviti membuat devops seperti apa: integrasi berterusan, penghantaran berterusan, infrastruktur awan, automasi ujian, dan pengurusan konfigurasi. Sekiranya anda melakukan lima perkara ini, anda melakukan devops. Jelas, kelima-lima itu penting untuk dilakukan dengan betul, tetapi terlalu mudah untuk salah. Khususnya, integrasi berterusan dan penyampaian berterusan (CI / CD) mungkin merupakan langkah yang paling sukar untuk dikuasai oleh para pemaju.

Integrasi berterusan (CI) adalah proses di mana pembangun dan penguji secara kolaboratif mengesahkan kod baru. Secara tradisinya, pembangun menulis kod dan mengintegrasikannya sebulan sekali untuk ujian. Itu tidak cekap — kesalahan dalam kod dari empat minggu yang lalu dapat memaksa pembangun untuk menyemak semula kod yang ditulis satu minggu yang lalu. Untuk mengatasi masalah itu, CI bergantung pada automasi untuk mengintegrasikan dan menguji kod secara berterusan. Pasukan Scrum menggunakan kod komitmen CI paling sedikit setiap hari, sementara majoriti dari mereka melakukan kod untuk setiap perubahan yang diperkenalkan.

Penghantaran berterusan (CD) adalah proses membuat artifak yang boleh dilepaskan secara berterusan. Beberapa syarikat melancarkan kepada pengguna sekali atau beberapa kali sehari, sementara yang lain melepaskan perisian dengan kadar yang lebih perlahan untuk alasan pasaran. Walau apa pun, keupayaan untuk melepaskan diuji secara berterusan. Penyebaran berterusan dapat dilakukan berkat persekitaran awan. Server disediakan sedemikian rupa sehingga anda dapat menggunakan produksi tanpa mematikan dan mengemas kini pelayan secara manual.

Oleh itu, CI / CD adalah proses untuk pengembangan, pengujian, dan penyampaian kod baru yang berterusan. Beberapa syarikat seperti Facebook dan Netflix menggunakan CI / CD untuk menyelesaikan 10 atau lebih siaran setiap minggu. Syarikat lain berjuang untuk mencapai tahap itu kerana mereka menyerah pada satu atau lebih daripada lima perangkap yang akan saya bincangkan seterusnya.

CI / CD pitfall # 1: Mengautomasikan proses yang salah terlebih dahulu

Perangkap ini cenderung menyerang organisasi yang membuat peralihan dari pengembangan air terjun ke devops. Organisasi baru mempunyai kelebihan melaksanakan CI / CD dari awal. Syarikat-syarikat yang ada harus bergerak secara bertahap dari pembangunan manual ke pembangunan yang sangat automatik. Peralihan penuh boleh memakan masa beberapa bulan, yang bermaksud anda perlu berulang kali bagaimana anda menggunakan CI / CD.

Apabila anda bertanya, "Adakah ini perlu automatik sekarang?" jalankan senarai semak berikut:

  1. Berapa kerap proses atau senario diulang?
  2. Berapa lama prosesnya?
  3. Apakah pergantungan orang dan sumber yang terlibat dalam proses tersebut? Adakah mereka menyebabkan kelewatan dalam CI / CD?
  4. Adakah proses rawan kesalahan jika tidak automatik?
  5. Apa urgensi dalam proses automatik?

Dengan menggunakan senarai semak ini, anda dapat memprioritaskan langkah-langkah dalam pelaksanaan CI / CD. Pertama sekali, automatikkan proses menyusun kod. Sebaik-baiknya, anda akan menggabungkan kod beberapa kali sehari (1). Secara manual, prosesnya memakan masa beberapa minit hingga beberapa jam (2). Itu menghentikan output sehingga penyusun menyelesaikan tugas (3). Ini juga rentan terhadap kesalahan manusia (4), dan kerana CI / CD adalah impian paip tanpa integrasi automatik, ini sangat mendesak (5).

Kami boleh menjalankan senarai semak yang sama semasa ujian. Semasa anda beralih ke CI / CD, anda mungkin tertanya-tanya: Perlukah kita mengautomasikan ujian fungsional atau ujian UI terlebih dahulu? Kedua-duanya akan diulang sekurang-kurangnya sekali sehari (1). Kedua-duanya memerlukan masa dua hingga tiga jam untuk aplikasi bersaiz sederhana (2). Tetapi ia melibatkan pelbagai kebergantungan (3). Sekiranya anda mengautomasikan ujian fungsional, anda mungkin tidak perlu mengemas kini skrip automasi yang kerap. UI, sebaliknya, sering berubah dan dengan itu memerlukan perubahan skrip yang kerap. Walaupun kedua-duanya rentan terhadap ralat (4), anda harus mengutamakan ujian berfungsi sebelum ujian UI untuk memanfaatkan sumber anda dengan sebaik-baiknya (5).

Mari lakukan ini sekali lagi dengan proses menyiapkan persekitaran. Senario ini hanya berulang kali jika anda sedang bekerja atau mengalami perubahan berat (1). Ini adalah proses yang memakan masa yang boleh memakan masa beberapa jam jika tidak berhari-hari (2). Anggota pasukan baru tidak dapat melakukan sesuatu yang bermanfaat tanpa persekitaran, jadi jelas ada ketergantungan dan kelewatan (3). Saya tidak akan mengatakan bahawa prosesnya rawan kesalahan (4), jadi masih mendesak (5)? Saya bersandar pada ya, tetapi saya masih mengutamakan integrasi dan ujian fungsional terlebih dahulu.

Tidak ada perkara seperti berlebihan. Sekiranya anda mempunyai sumber yang tidak terhad, anda akan mengotomatisasi segala yang mungkin. Walaupun begitu, anda tidak dapat mencapai automasi ujian sepenuhnya. Kadang-kadang anda boleh membahagikan tugas menjadi segmen yang lebih kecil dan mengautomasikan tambalan. Kadang kala anda hanya perlu mendokumentasikan prosesnya secara terperinci dan melaksanakannya secara manual.

CI / CD pitfall # 2: Membingungkan penyebaran berterusan untuk penghantaran berterusan

Penerapan berterusan adalah konsep bahawa setiap perubahan yang dibuat dalam pangkalan kod akan diterapkan segera ke produksi jika hasil saluran pipa berhasil. Ini menakutkan bagi kebanyakan organisasi kerana perubahan produk yang cepat dapat menakutkan pengguna.

Syarikat percaya bahawa jika mereka tidak mempraktikkan penggunaan berterusan, mereka tidak melakukan CD. Mereka gagal membezakan antara penyebaran berterusan dan penghantaran berterusan.

Penyampaian berterusan adalah konsep bahawa setiap perubahan pada pangkalan kod berjalan melalui saluran pipa hingga titik penerapan ke lingkungan yang tidak menghasilkan. Pasukan mencari dan menangani masalah dengan segera, tidak lewat ketika mereka merancang untuk melepaskan pangkalan kod.

Pangkalan kod sentiasa berada pada tahap kualiti yang selamat untuk dilepaskan. Bila melepaskan asas kod ke pengeluaran adalah keputusan perniagaan.

Walaupun penyebaran berterusan mengganggu kebanyakan organisasi, penghantaran berterusan bergema dengan mereka. Penyampaian berterusan memberi mereka kawalan terhadap peluncuran produk, fungsi, dan faktor risiko. Terdapat masa untuk ujian alfa, untuk pelanggan beta, untuk pengguna awal, dan sebagainya.

Kejatuhan CI / CD # 3: Kekurangan papan pemuka dan metrik yang bermakna

Dalam pelaksanaan CI / CD, pasukan scrum boleh membuat papan pemuka sebelum anggota mengetahui apa yang perlu mereka lacak. Akibatnya, pasukan menjadi mangsa kesalahan logik: "Ini adalah metrik yang kita ada, jadi itu mesti menjadi penting." Sebaliknya, buat penilaian progresif sebelum merancang papan pemuka.

Anggota organisasi IT yang berbeza, dan bahkan pelbagai anggota pasukan scrum, mempunyai keutamaan yang berbeza. Sebagai contoh, orang-orang di pusat operasi rangkaian (NOC) menyukai penunjuk merah, kuning, dan hijau. Papan pemuka lampu isyarat sedemikian membolehkan kakitangan NOC membezakan masalah tanpa membaca teks padat atau membebankan kemampuan analisis mereka. Lampu isyarat membantu menjadikan beratus pelayan dapat dikendalikan.

Anda mungkin tergoda untuk menggunakan papan pemuka lampu isyarat untuk CI / CD juga. Hijau, kita berada di landasan yang betul. Kuning, kita tidak berada di landasan, tetapi kita mempunyai rancangan untuk mengatasinya. Merah, kita tidak berada di landasan dan mungkin perlu mengubah objektif kita.

Papan pemuka itu mungkin berguna untuk master scrum, tetapi bagaimana dengan VP pengembangan atau CTO? Sekiranya pasukan scrum mempunyai 350 jam kerja lebih awal untuk pecut dua minggu, dan masing-masing 10 anggotanya bertanggungjawab selama 35 jam, mereka akan menerima sejumlah poin cerita. Pengurusan atasan mungkin kurang berminat dengan status titik cerita dan lebih ingin tahu mengenai kadar "kemerosotan": kelajuan penyelesaian tugas. Adakah ahli pasukan membawa muatan mereka? Berapa cepat? Adakah mereka bertambah baik dari masa ke masa?

Sayangnya, kadar penurunan harga boleh mengelirukan jika pelbagai pihak berkepentingan tidak memahami tabiat yang disepakati oleh pasukan scrum. Beberapa pasukan membakar mata lebih awal ketika mereka pergi. Yang lain menunggu sehingga menjelang akhir pecut untuk membakar titik terbuka. Papan pemuka harus mempertimbangkannya.      

Sekiranya anda dapat menilai data apa yang diinginkan semua orang dan menetapkan naratif standard untuk apa maksud data itu, maka anda boleh merancang papan pemuka yang berguna. Tetapi jangan terobsesi terhadap zat dengan mengorbankan penampilan. Tanya bagaimana pihak berkepentingan menginginkannya. Adakah grafik, teks, atau nombor adalah yang terbaik?

Ini adalah pertimbangan untuk diteliti dalam penilaian progresif. Mereka menggambarkan betapa sukarnya membuat papan pemuka CI / CD yang berguna — dan membuat semua orang gembira. Sering kali, ahli pasukan yang paling lantang merampas prosesnya, dan yang lain merasa kecewa kerana papan pemuka hanya memenuhi pilihan seseorang. Dengarkan semua orang.  

CI / CD pitfall # 4: Kekurangan koordinasi antara integrasi berterusan dan penyampaian berterusan

Perangkap ini membawa kita kembali kepada definisi konsensus devops kita, yang berpendapat bahawa integrasi berterusan dan penyampaian berterusan adalah dua perkara yang berbeza. CI memberi makan CD. Melaksanakan saluran integrasi berterusan yang baik dan sistem penyampaian berterusan berterusan memerlukan masa berbulan-bulan dan memerlukan kerjasama. Jaminan kualiti, pasukan devops, jurutera ops, master scrum - semua mesti menyumbang. Mungkin aspek paling sukar dalam CI / CD adalah faktor manusia ini daripada cabaran teknikal yang telah kita bincangkan. Sama seperti anda tidak dapat memprogram hubungan yang sihat antara dua orang, anda tidak dapat mengotomatisasi kolaborasi dan komunikasi.

Untuk mengukur tahap koordinasi ini, tolok ukur proses CI / CD anda berbanding yang terbaik dalam perniagaan. Syarikat seperti Netflix dapat menyelesaikan integrasi, pengujian, dan penghantaran dalam masa dua hingga tiga jam. Mereka mewujudkan sistem yang menyebarkan kod dari tangan ke tangan tanpa ragu-ragu dan perbincangan. Tidak, itu tidak 100 peratus automatik kerana itu mustahil dengan teknologi semasa.

CI / CD pitfall # 5: Mengimbangi kekerapan menjalankan pekerjaan integrasi berterusan dan penggunaan sumber

Pekerjaan integrasi berterusan seharusnya dicetuskan untuk setiap perubahan yang diperkenalkan dalam kod. Pekerjaan yang berjaya membolehkan perubahan dilakukan sementara kegagalan menolak perubahan. Ini mendorong pemaju untuk memeriksa bahagian kod yang lebih kecil, mencetuskan lebih banyak peningkatan dalam sehari. Walau bagaimanapun, pekerjaan integrasi berterusan yang tidak perlu memakan sumber, yang membuang masa dan wang.

Kerana proses ini melibatkan banyak penggunaan sumber daya (CPU, daya, waktu), perisian harus dipecah menjadi komponen yang lebih kecil untuk membuat saluran pipa yang berjalan lebih cepat. Atau pekerjaan integrasi berterusan harus dirancang untuk membuat daftar masuk yang pertama kali diuji secara tempatan. Tujuannya adalah untuk mencari keseimbangan antara kekerapan melaksanakan pekerjaan integrasi berterusan dan penggunaan sumber.

Jaga matlamat itu

Ketika kita menggali perangkap CI / CD - lengkap dengan semua terminologi esoterisnya - mudah untuk melupakan mengapa ini penting. Pada akhirnya, CI / CD penting kerana memenuhi matlamat perniagaan.

Eksekutif teknologi tahu bahawa evolusi berterusan, perbaikan cepat, dan hasil berkualiti membuat dan mengekalkan pelanggan. Mereka tahu bahawa pelepasan yang gagal mengundang ulasan kepada App Store, dan mendapatkan ulasan yang tinggi adalah lebih sukar daripada menyimpannya. Peranti mungkin mencipta pengalaman kerja yang lebih baik untuk pasukan anda, tetapi bukan itu sebabnya syarikat melaksanakan devops.

Ringkasnya, perangkap CI / CD patut dikaji kerana berbilion dolar dipertaruhkan. Walaupun saya tidak mencadangkan anda menambahkan ticker stok atau tracker ulasan App Store ke papan pemuka CI / CD anda, saya menggesa anda untuk terus mengetahui perkara ini. Banyak bergantung pada butiran CI / CD.

Zubin Irani adalah pengasas bersama dan Ketua Pegawai Eksekutif cPrime, sebuah perunding perkhidmatan penuh yang melaksanakan transformasi tangkas dan memberikan penyelesaian tangkas untuk lebih dari 50 syarikat Fortune 100 dan banyak majikan terbesar di Silicon Valley.

Forum Teknologi Baru menyediakan tempat untuk meneroka dan membincangkan teknologi perusahaan yang baru muncul dalam kedalaman dan luas yang belum pernah terjadi sebelumnya. Pemilihannya bersifat subjektif, berdasarkan pilihan teknologi yang kami percayai penting dan menarik minat pembaca. tidak menerima jaminan pemasaran untuk penerbitan dan berhak untuk mengedit semua kandungan yang disumbangkan. Hantarkan semua pertanyaan ke [email protected]