Mengapa Jenkins menjadi mesin pengembang

Tren seperti agile development, devops, dan continuous integration menunjukkan kebutuhan perusahaan modern untuk membangun perangkat lunak yang sangat efisien - dan, jika perlu, menghasilkan uang receh.

Manuver terakhir itu adalah bagaimana CloudBees menjadi perusahaan seperti sekarang ini. Dulunya merupakan penyedia PaaS cloud publik yang independen untuk pembuat kode Java (dinilai tinggi oleh Andrew Oliver dalam “PaaS aneh mana yang harus saya gunakan?”), CloudBees berputar tajam 18 bulan yang lalu untuk diluncurkan kembali sebagai penyedia terkemuka Jenkins, open alat sumber untuk mengelola proses pengembangan perangkat lunak.

Menurut CEO Sasha Labourey, sebagai penyedia Java PaaS, CloudBees telah "tumbuh dengan baik", tetapi "banyak orang yang lebih besar dengan cek yang lebih besar" ragu-ragu untuk berkomitmen dalam pasar PaaS yang tidak stabil dan tidak memiliki standardisasi. Pada saat yang sama, Jenkins lepas landas seperti roket - dan Labourey melihat peluang besar, terutama karena CloudBees sudah menawarkan Jenkins sebagai layanan dan telah mempekerjakan Kohsuke Kawaguchi, pencipta Jenkins. Lauk pauk Jenkins menjadi hidangan utama.

Juggernaut Jenkins

Ada apa di balik popularitas Jenkins? Sederhananya, Jenkins telah menjadi standar open source untuk mengelola sisi pengembang, mulai dari pengelolaan kode sumber hingga pengiriman kode hingga produksi. Menurut Labourey, "Komunitas melihat Jenkins sebagai mesin orkestrasi dan otomatisasi ... Saya pikir alasan mengapa Jenkins menjadi mesin de facto adalah karena sangat mudah dicolokkan." Sebuah ekosistem dengan lebih dari 1.100 plugin telah muncul, memungkinkan pelanggan untuk menambahkan semua jenis fungsionalitas dan mengintegrasikan Jenkins dengan segala hal mulai dari Active Directory hingga GitHub hingga OpenShift PaaS.

Jenkins adalah solusi integrasi berkelanjutan (CI) dan pengiriman berkelanjutan (CD). Ide CI adalah menggabungkan kode dari pengembang individu ke dalam proyek beberapa kali per hari dan menguji terus menerus untuk menghindari masalah hilir. CD mengambil langkah lebih jauh untuk memastikan bahwa semua kode yang digabungkan selalu dalam status siap produksi. Jenkins memungkinkan pengembang untuk mengotomatiskan proses ini sebanyak mungkin - hingga titik penerapan. Labourey memberikan contoh:

Katakanlah sebuah perusahaan menggunakan Chef atau Puppet untuk diterapkan di AWS. Jenkins tidak akan menggantikannya. Jenkins akan memanggil Puppet untuk melakukannya - Oke, ini sedikit, jadi sebut saja skrip Puppet ini dan lihat cara kerjanya. Dan hasil eksekusi Puppet akan menjadi masalah bagi Jenkins karena mungkin memutuskan untuk membatalkan penerapan dan mengambil tindakan lebih lanjut. Kami menyebutnya "saluran pipa". Ini benar-benar rangkaian langkah ini. Bisa lima langkah, atau bisa jadi 50 langkah.

Jenkins berfungsi sebagai mesin alur kerja untuk mengelola pipeline CI / CD ini dari sumber ke pengiriman, kata Labourey, tetapi di sepanjang jalan, banyak alat yang berbeda dapat dipanggil untuk menjalankan fungsi yang berbeda.

Docker adalah salah satu alat tersebut, dan Docker bersama dengan Jenkins memiliki pengaruh yang besar pada tim pengembangan. Semua orang tahu bahwa Docker merampingkan pengembangan dan membuat penerapan jauh lebih mudah, tetapi Labourey mengamati bahwa hal itu juga membantu menjaga kejujuran pengembang: Mereka tidak lagi dapat menyalahkan beberapa kesalahan konfigurasi lingkungan pengembangan saat sebuah build rusak dan terbakar. Pada mesin fisik, lingkungan pengembangan secara bertahap menjadi rusak, secara tidak sengaja menyebabkan build rusak. Tetapi ketika Anda membuat kode di atas gambar Docker asli, Anda hanya memiliki kode cacat Anda sendiri yang harus disalahkan ketika build tidak berjalan.

Jenkins dan ekosistem terintegrasi bersama-sama menyediakan infrastruktur perangkat lunak yang terkoordinasi untuk pengembangan yang gesit dan secara lebih luas membentuk "inti dari inisiatif pengembang," kata Labourey.

Menuju kesana dari sini

Semua otomatisasi dan efisiensi pengembangan ini terdengar bagus, tetapi bagaimana dengan organisasi yang hampir tidak pernah fokus pada pengembangan yang gesit? Labourey menawarkan saran untuk mengarungi CI / CD:

Saya pikir cara terbaik untuk melakukannya adalah memulai dari yang kecil. Pilih sebuah proyek. Jangan berkata, "Oke, sekarang kami adalah toko pengiriman berkelanjutan, semuanya berjalan seperti ini." Mulailah dengan tim yang bersedia, yang mungkin lebih fleksibel daripada tim lain, mungkin anggota tim yang lebih baru, yang kurang mengakar dengan cara yang ada dalam melakukan sesuatu. Pilih proyek yang mudah. Jangan mencoba menggunakan itu sebagai cara untuk mengatakan jika yang itu berhasil, semuanya akan berhasil. Jangan mencoba gagal; mencoba untuk berhasil. Pilih tim yang bersedia, pilih proyek yang mudah, sampai di sana. Tim ini akan menjadi staf penjualan terbaik Anda karena sekarang Anda dapat menunjukkan bahwa itu berhasil. Mereka dapat berbicara tentang bagaimana pekerjaan mereka menjadi lebih baik karena, terus terang, cara lama itu membosankan.

Bagian dari prosesnya, catat Labourey, adalah "mengekstrak pengetahuan yang tersimpan dengan tenang di otak orang dan memasukkannya ke dalam pipa sebagai logika." Itu tidak terjadi dalam semalam. Seringkali, organisasi pengembangan mulai dengan mengembangkan CI dan terus mengembangkan CD dari waktu ke waktu.

Organisasi pembangunan cenderung memiliki persyaratan yang sangat bervariasi dan sangat spesifik. Jadi CloudBees menawarkan versi SaaS generik berbasis langganan yang dijalankan oleh CloudBees dan versi "SaaS pribadi", yang dapat diterapkan oleh pelanggan di AWS atau Azure (atau secara lokal di OpenStack) dan menyesuaikannya dengan isi hati mereka.

Sulit untuk melebih-lebihkan pentingnya mengatur, mengotomatiskan, dan merampingkan proses pengembangan. CI / CD sangat penting bagi pengembang, dan implementasi dev yang sukses pada gilirannya memiliki implikasi yang melampaui TI ke bisnis itu sendiri. Perangkat lunak yang terus ditingkatkan secara terus-menerus meningkatkan produk dan layanan. Tesla, misalnya, mengalami kemunduran serius dengan salah satu modelnya terbakar - dan meluncurkan peningkatan perangkat lunak memperbaiki masalah dalam semalam.

"Sangat menarik jika Anda mendapatkan efisiensi 10 persen lebih; ​​jika Anda menghabiskan $ 100 juta setahun di bidang TI, bagus sekali - Anda memiliki $ 10 juta yang dapat Anda belanjakan di tempat lain," kata Labourey. "Tetapi manfaat sebenarnya adalah ketika bisnis menyadari bahwa dengan memanfaatkan alat-alat tersebut dan cara melakukan sesuatu, mereka dapat meningkatkan penjualan sebesar 10 persen."