CI / CD sebagai layanan: 10 alat untuk integrasi dan pengiriman berkelanjutan di cloud

Cloud dan integrasi berkelanjutan (CI) adalah pasangan yang cocok. Sementara cloud membebaskan kita dari rasa sakit saat memasang dan memelihara server fisik, integrasi berkelanjutan mengotomatiskan banyak kesulitan dalam membangun, menguji, dan menerapkan kode kita. Jika keduanya bertujuan untuk melepaskan pekerjaan dari pundak tim pengembangan, masuk akal untuk menggabungkan mereka dan menghilangkan yang lebih membosankan dengan satu langkah.

Ada banyak layanan integrasi berkelanjutan dan semuanya melakukan hal yang sama, setidaknya dalam arti abstrak. Mereka mulai dengan daftar tugas seperti kompilasi atau pengujian yang harus diselesaikan sebelum dunia dapat menghargai kejeniusan perangkat lunak baru Anda. Saat Anda memasukkan baris kode Anda, alat mulai bekerja melalui daftar periksa sampai mengalami hambatan. Jika tidak ada penghalang jalan, semua orang senang.

Siapa pun dapat menggunakan integrasi berkelanjutan untuk proyek pengembangan perangkat lunak apa pun, tetapi keuntungan terbesar dinikmati oleh tim, lebih disukai tim besar yang mengerjakan blok kode yang sama dan saling terkait. Implementasi yang paling menyeluruh dari integrasi berkelanjutan membangun dan membangun kembali kode sebelum menguji dan menguji ulang, semuanya untuk mencari kesalahan baru dan ketidaksesuaian yang mungkin telah dibuat saat anggota tim yang berbeda memeriksa kode mereka. Server integrasi berkelanjutan menyinkronkan pekerjaan semua pemrogram dan membantu tim mendeteksi masalah apa pun. 

Beberapa daftar tugas untuk server CI diakhiri dengan pengujian, tetapi akhir-akhir ini semakin banyak tim yang memperluas daftar untuk menyertakan penerapan kode baru, sebuah proses yang terkadang disebut "penerapan berkelanjutan". Penerapan yang sepenuhnya otomatis membuat beberapa orang gugup dan mereka akan sering menambahkan beberapa jeda manual dalam prosesnya. Menambahkan sedikit akuntabilitas dan jaminan manusia membuat mereka sedikit rileks. Mereka akan menyebut pendekatan hibrid ini sebagai "pengiriman berkelanjutan" karena pendekatan ini mengirimkan kode ke beberapa staging atau cluster pengujian tempat pendekatan tersebut akan menunggu manusia untuk melakukan dorongan terakhir ke produksi. 

Jika integrasi berkelanjutan bagus di ruang server di lorong, itu bisa lebih baik lagi di cloud di mana ada peluang besar untuk pengiriman yang lebih cepat dan efisiensi yang lebih besar. Dalam kasus terbaik, cloud dapat membagi pekerjaan dan menjalankan tugas secara paralel. Layanan dimulai dengan kumpulan besar perangkat keras dan kemudian membagikannya di antara banyak tim. Selama semua orang tidak mendorong kode mereka pada saat yang sama, build dan pengujian akan berjalan lebih cepat. Membeli rak besar perangkat keras yang sama hanya untuk saat-saat ketika pengembang ingin menjalankan semua pengujian itu mahal, tetapi jika tim berbagi rak, mereka semua dapat menikmati semburan kecepatan.

Ada bahaya dan kekhawatiran, dan yang terbesar adalah kehilangan kendali. Semua layanan cloud memerlukan penyerahan kode Anda ke pihak ketiga, sebuah pilihan yang mungkin terasa membebaskan bagi sebagian orang tetapi menakutkan bagi yang lain. Semua layanan cloud berusaha keras untuk menekankan keamanan, tetapi entah bagaimana terasa berbeda ketika kode berada di bawah atap Anda sendiri.

Selain dukungan luas untuk semua bahasa utama, layanan ini mencakup sejumlah bahasa kecil yang mengejutkan dan lebih dari beberapa bahasa yang benar-benar aneh dan tidak biasa. Ini lebih merupakan hasil dari keputusan arsitektural yang baik di awal daripada upaya heroik apa pun oleh para pengembang. Daftar tugas hampir selalu dikodekan sebagai perintah untuk beberapa shell atau baris perintah, sehingga alat integrasi berkelanjutan terus mengeluarkan perintah sampai daftar habis atau beberapa penghalang pandang yang tidak dapat diatasi muncul. Beberapa bahasa seperti Java menawarkan opsi yang lebih canggih tetapi sebagian besar alat dapat menyelesaikan apa pun yang dapat Anda lakukan dengan baris perintah. 

Berikut 10 opsi berbeda untuk melakukan integrasi berkelanjutan di cloud.

CloudBees

CloudBees Core dimulai dengan Jenkins, proyek open source terkenal untuk integrasi berkelanjutan, lalu menambahkan pengujian, dukungan, dan beberapa jaminan bahwa kode akan berjalan begitu saja. Perusahaan menampi semua plugin eksperimental, menambahkan beberapa plugin mereka sendiri, dan kemudian memoles yang tepat sehingga berfungsi seperti yang diharapkan saat Anda membutuhkannya.

CloudBees masih mempekerjakan 80 persen tim pengembangan Jenkins dan mereka sering menyumbangkan kode ke proyek sumber terbuka, jadi Anda dapat yakin bahwa mereka memiliki pemahaman yang baik tentang platform dominan ini. Untuk mempercepat, CloudBees juga menambahkan paralelisasi ekstensif serta instrumentasi untuk melacak proses pengembangan Anda.

CloudBees menawarkan berbagai titik harga yang berkisar dari tingkatan gratis hingga "starter kit" untuk layanan selama satu tahun penuh. Perusahaan juga memberikan dukungan untuk Jenkins bagi siapa saja yang membutuhkan bantuan dengan alat tersebut tetapi tidak membutuhkan atau menginginkan komputasi awan.

AWS CodePipeline

Alat Amazon untuk integrasi dan penerapan berkelanjutan, AWS CodePipeline, dioptimalkan untuk mengirimkan kode ke server AWS sambil tetap terbuka untuk jalur yang lebih rumit untuk kode dan data Anda. Alat dasar menawarkan pilihan yang bagus dari lingkungan build yang telah dikonfigurasi sebelumnya untuk bahasa utama (Java, Python, Node.js, Ruby, Go, Android, .Net Core untuk Linux) dan kemudian membuang hasilnya ke dalam bucket S3 sebelum mengirimkannya pergi ke server untuk mulai berjalan.

Ada banyak sekali lapisan dengan nama yang sedikit berbeda. CodeBuild mengambil genius terbaru Anda dari CodeCommit ketika dipicu oleh CodePipeline dan kemudian menyerahkan hasilnya ke CodeDeploy. Jika itu terlalu banyak Kode untuk Anda konfigurasikan, Anda dapat langsung beralih ke CodeStar, yang menawarkan lapisan otomatisasi lainnya. Andai saja ada CodeBugEraserStar untuk menghapus semua kesalahan kami secara otomatis juga. Perlu dicatat bahwa Anda tidak membayar secara teknis untuk salah satu dari lapisan Kode ini. Amazon menagih Anda hanya untuk komputasi dan sumber daya penyimpanan yang digunakan selama proses tersebut. Ini tidak sepenuhnya gratis, meskipun rasanya seperti itu.

Pipeline Bitbucket

Atlassian, pengembang papan pelacakan pekerjaan populer, Jira, dan repositori kode, Bitbucket, memutuskan untuk memanfaatkan pegangan mereka pada alur kerja kami dengan membuat Bitbucket Pipelines, alat integrasi berkelanjutan di awan Bitbucket. Saus rahasia lebih merupakan integrasi, dalam hal ini berupa koneksi antara mekanisme build dan tool Atlassian lainnya. Setidaknya secara kosmetik, Pipelines bukanlah hal yang terpisah. Ini hanyalah opsi menu lain untuk setiap proyek di Bitbucket. Opsi menu lainnya mengarah ke penerapan, memungkinkan Anda memilih di mana build akan berakhir.

Koneksi adalah berkah dan batasan. Jika Anda memilih salah satu template yang sudah ditentukan untuk bahasa utama (Java, JavaScript, Python, PHP, .Net, dll.), Anda dapat membuat dan menerapkan kode Anda dalam beberapa klik. Tetapi jika Anda menyimpang dari standar, Anda akan mulai menemukan bahwa opsi tidak ada. Atlassian memang mendorong pasar aplikasi yang tampaknya merupakan campuran bagan dan webhook ke layanan lain. Aplikasi teratas pada bagan saat saya menulis ini akan menghubungkan Bitbucket dengan Jenkins, mungkin untuk melakukan sesuatu yang tidak dapat dilakukan dengan cepat di dalam tembok.

Keuntungan utama dari Pipelines adalah kecepatan. Atlassian telah melakukan pra-rekayasa sebagian besar jalur utama dari kode hingga menjalankan penerapan dan Anda dapat mengikuti jejak perusahaan hanya dengan beberapa dolar. Sulit untuk membandingkan biaya penggunaan Bitbucket karena harga build dalam hitungan menit, seperti kebanyakan model tanpa server, tetapi tim sering kali mendedikasikan sekumpulan instance untuk menangani build Jenkins. Bahkan jika Anda mematikannya pada malam dan akhir pekan, jam bertambah.

CI / CD GitLab

Salah satu pesaing terbesar Atlassian adalah GitLab, perusahaan lain yang ingin menangani setiap langkah proses di antara jari Anda dan menjalankan penerapan. Mekanisme pembuatan, pengujian, dan penerapan GitLab juga terhubung langsung ke repositori Git-nya sehingga dapat dipicu berdasarkan komitmen. Sebagian besar prosesnya dibuat di sekitar container Docker dan caching ini dapat sangat menyederhanakan beberapa pekerjaan konfigurasi yang harus dilakukan di sekitar build Jenkins.

Tugas build dapat menargetkan bahasa apa pun, tetapi harus dipicu oleh GitLab Runner, alat penskalaan otomatis yang ditulis dalam Go yang siap untuk sebagian besar platform. Fleksibilitas ini berarti Anda dapat memicu pekerjaan acak apa pun di komputer lain, sesuatu yang mungkin berguna dengan arsitektur rumit yang melakukan lebih dari sekadar memberikan layanan mikro.

Harga dibundel dengan berbagai tingkatan untuk perkiraan kebutuhan. Grup tingkat emas, misalnya, mendapatkan semua fitur terbaik seperti dasbor keamanan dan 50.000 menit membangun di kluster mesin bersama. Tidak ada biaya untuk menggunakan mesin Anda sendiri sebagai bagian dari proses atau contoh terpisah di beberapa cloud lain.

CircleCI

Banyak alat integrasi berkelanjutan berfokus pada kode yang dapat dibuat di lingkungan Linux. CircleCI membangun dan mengirimkan di dunia Linux, tetapi juga menawarkan produk yang akan membangun aplikasi Android dan apa pun yang keluar dari Xcode Apple (untuk iOS, MacOS, tvOS, atau watchOS). Jika Anda bekerja dalam tim yang memproduksi aplikasi untuk platform ini, Anda dapat menggunakan kode Anda dan membiarkan CircleCI memberlakukan beberapa disiplin pengujian pada semua jenius yang berbeda dari tim Anda.

Daftar tugas dijabarkan dalam file YAML. CircleCI menggunakan Docker, dalam semua kemuliaan multi-lapisnya, untuk mengonfigurasi lingkungan pengujian untuk kode tersebut. Build dimulai dengan container baru dan begitu pula semua pengujian. Pekerjaan Mac berjalan di mesin virtual yang memiliki umur yang sama pendeknya. Ini menghindari beberapa masalah dengan konfigurasi karena lingkungan yang bersih tidak memiliki sisa bit yang tergeletak di sekitarnya. (Jadi jika masalah Anda disebabkan oleh flotsam digital yang masih ada, itu salah Anda.)

Penetapan harga difokuskan pada berapa banyak CPU yang Anda hasilkan. Jumlah pengguna dan jumlah repositori dibatasi hingga tak terbatas. Namun, jumlah menit pembuatan dan container yang melakukan pembangunan ini akan dihitung. Penampung pertama gratis dan Anda dapat menjalankan satu build di dalamnya. Jika Anda menginginkan lebih banyak paralelisme atau lebih banyak hasil, CircleCI dapat menghasilkan uang. Pengguna Mac tidak mendapatkan penawaran gratis yang sama, tetapi ada rencana perkenalan bagi siapa pun yang menguji layanan tersebut.

Travis CI

Jika build Anda menghasilkan kode yang perlu diuji pada kotak Windows, Travis CI menawarkan Anda satu pemberhentian. Perusahaan telah menawarkan opsi MacOS dan Linux untuk beberapa waktu tetapi baru saja meluncurkan opsi Windows, membuatnya lebih sederhana untuk menghasilkan kode yang berjalan di lebih banyak tempat.

Daftar tugas juga dijabarkan dalam YAML dan tugas dijalankan di mesin virtual bersih dengan konfigurasi yang cukup standar. Kode Linux mendapatkan beberapa versi dasar Ubuntu, kode Mac dijalankan di salah satu dari lusinan kombinasi OS X dan Xcode dan JDK. Kode Windows hanya dapat berakhir di satu versi Windows Server (1803) untuk saat ini. Travis CI menawarkan daftar panjang dari 30 bahasa dan membangun aturan yang telah dikonfigurasi sebelumnya dan cukup siap untuk dijalankan.

Penetapan harga didasarkan pada berapa banyak pekerjaan bersamaan yang dapat dijalankan sekaligus, tetapi tidak ada batasan resmi mengenai jumlah menit yang dapat digunakan oleh build ini. Ini seperti Anda mendapatkan sejumlah tetap instans khusus untuk pekerjaan Anda dan mereka siap sepanjang waktu. Tidak ada opsi gratis untuk pekerjaan berpemilik, tetapi proyek sumber terbuka "selalu gratis" —jadi itu mungkin cara termudah untuk mencoba Travis CI.

Saluran Pipa Azure

Jika Anda bertanya-tanya apakah Microsoft modern memiliki sikap "Tidak ditemukan di sini", lihat Azure Pipelines. Literatur penjualan mengatakan, "Bahasa apa pun, platform apa pun". Meskipun ini hampir pasti sedikit hiperbola dan Azure mungkin tidak memiliki banyak hal untuk ditawarkan kepada pemrogram ENIAC, ini menawarkan jalur Microsoft, Linux, dan MacOS untuk kode Anda. Sudut Apple hanya menargetkan build MacOS, bukan iOS atau tvOS atau watchOS, tapi jangan pilih-pilih. Ini adalah gelas yang isinya lebih dari setengahnya.

Secara abstrak, sistemnya mirip dengan yang lain. Ada agen yang mengeksekusi build untuk menghasilkan artefak. Beberapa di antaranya dapat dihosting sendiri jika opsi itu membantu. Tumpukan tersebut sepenuhnya mencakup wadah Docker dan perangkat keras Azure siap menjalankannya untuk Anda. Semua detail ini dapat diklik bersama dengan desainer visual yang dibangun ke dalam halaman web, atau ditentukan dengan YAML jika Anda lebih suka tinggal di dunia baris perintah.

Harga tersebut dilengkapi dengan "pekerjaan paralel" gratis dengan waktu pembuatan 1800 menit. Jika Anda ingin lebih banyak paralelisme atau lebih banyak waktu terbangun, Anda mulai membayar. Rencananya termasuk tingkat gratis yang murah hati untuk proyek sumber terbuka, sekali lagi menekankan keinginan Microsoft untuk mengambil bagian dalam komunitas sumber terbuka umum. Tetapi jika Microsoft akan menghabiskan $ 7,5 miliar untuk membeli kursi di meja dengan mengakuisisi GitHub, yah, itu masuk akal. Di mana semua kode ini akan berjalan? Azure Pipelines akan dengan senang hati memindahkannya ke perangkat keras Azure dengan lancar.