Blogs

Memilih Cloud CI/CD Platform yang Tepat untuk Cloud Anda!

Blog Single

Hosting CI/CD di cloud dapat mempercepat interaksi antara jalur pengembangan dan repositori kode sumber dan membuat hidup lebih mudah bagi pengembang. Ada sejumlah opsi yang mengejutkan. Jika sasaran Anda adalah pengembangan perangkat lunak berkecepatan tinggi dan pengiriman yang sering dari build yang berfungsi ke produksi, Anda perlu mengotomatiskan setidaknya sebagian dari proses pengujian dan pengiriman. Idealnya, itu berarti mengimplementasikan pipeline CI/CD untuk proyek Anda, bersama dengan rangkaian pengujian untuk menangkap kesalahan sebelum pelanggan melihat perangkat lunak, dan skrip yang mengimplementasikan langkah-langkah pipeline.

Apa itu CI/CD?

CI/CD adalah singkatan dari Continuous Integration (CI) dan Continuous Delivery (CD). Continuous Integration (CI) adalah metodologi untuk mengotomatisasi pembuatan, pengemasan, dan pengujian perangkat lunak secara konsisten. CI membantu memberikan keyakinan kepada tim bahwa perubahan yang mereka periksa ke dalam kontrol versi kode sumber tidak akan merusak build atau memasukkan bug ke dalam perangkat lunak. Titik akhir CI biasanya adalah check-in yang telah selesai ke cabang utama repositori perangkat lunak.

Sementara itu, Continuous Delivery (CD) mengotomatiskan pengiriman perangkat lunak yang diuji ke lingkungan infrastruktur. Itu biasanya tidak berarti melemparkannya langsung ke produksi untuk melihat apakah pelanggan mengeluh. Biasanya, organisasi memulai dengan mendorong pembangunan ke lingkungan pengembangan. Setelah pengembang sendiri menyelesaikan build baru dan merilisnya, biasanya ia pergi ke lingkungan pengujian, di mana ia digunakan oleh kelompok pengguna yang lebih luas (terkadang hanya penguji internal khusus, terkadang kader pengguna yang lebih besar mendaftar untuk pengujian beta atau "dog-fooding") dan dipantau secara ketat. Akhirnya, jika semuanya berjalan dengan baik, penguji menandatangani dan mendorong versi baru ke lingkungan produksi.

Pada setiap tahap CD, ada opsi untuk kembali dengan cepat ke versi lama dan membuat tiket laporan bug untuk ditangani pengembang di versi baru. Tujuannya bukan untuk mendorong banyak build ke dalam produksi, melainkan untuk terus meningkatkan dan menyempurnakan perangkat lunak tanpa memperkenalkan regresi. Istilah lain untuk praktik ini adalah “devops.

Kenapa Host CI/CD di Cloud?

Hosting platform CI/CD di pusat data Anda sendiri adalah pilihan yang layak, terutama bagi perusahaan yang mewajibkan hosting aplikasi dan data mereka di dalam firewall. Kerugian melakukan ini adalah Anda memerlukan tim khusus untuk memelihara infrastruktur, dan Anda akan mengeluarkan beberapa pengeluaran modal untuk server.

Jika Anda diizinkan untuk menghosting di cloud, biasanya ini merupakan opsi yang lebih baik. Biaya hosting di cloud sederhana, dan biaya operasional tersebut diimbangi dengan layanan yang disediakan: orientasi, pemeliharaan infrastruktur, pemeliharaan keamanan, dukungan, dan pemeliharaan perangkat lunak CI/CD. Hosting perangkat lunak CI/CD Anda di cloud sering kali mempermudah dan mempercepat pipeline untuk berinteraksi dengan repositori kode sumber Anda, jika mereka juga ada di cloud. Jika pengembang dan penguji Anda terdistribusi secara geografis, hosting repositori Anda di cloud sering kali memberikan pengalaman yang lebih baik kepada pengembang daripada hosting di server jarak jauh di belakang firewall.

Anda juga dapat menerapkan CI/CD pada gabungan server lokal dan cloud. Beberapa penawaran CI/CD terbaru berjalan dalam container di kluster Kubernetes, yang sama-sama senang berjalan di tempat dan di cloud. Dalam skenario penerapan hibrid, Anda dapat menempatkan setiap komponen di tempat yang paling masuk akal mengingat lokasi fisik pengembang itu sendiri dan lokasi jaringan server lain dalam infrastruktur pengembangan.

CI/CD harus terintegrasi dengan repositori Anda

Seperti yang mungkin telah Anda kumpulkan ketika Anda membaca "titik akhir CI biasanya adalah check-in yang telah selesai ke cabang utama dari repositori perangkat lunak," repo sangat penting untuk CI dan CD. Selain menjadi titik akhir dari proses check-in dan pengujian, repositori perangkat lunak adalah tempat pilihan untuk menyimpan skrip CI dan CD serta file konfigurasi Anda. Ya, banyak platform CI/CD dapat menyimpan skrip dan file lain secara internal, tetapi Anda biasanya lebih baik memilikinya dalam kontrol versi di luar alat.

Hampir semua alat CI/CD dapat berinteraksi dengan Git. Beberapa juga terintegrasi langsung dengan GitHub, GitHub Enterprise, GitLab, dan/atau Bitbucket. Beberapa juga mendukung Subversion dan/atau Mercurial.

Alat CI/CD Anda perlu mendukung bahasa dan alat pemrograman Anda

Setiap bahasa pemrograman atau kelompok bahasa (bahasa JVM, bahasa yang dikompilasi LLVM, bahasa .NET, dan sebagainya) cenderung memiliki alat pembuatan dan alat pengujiannya sendiri. Agar berguna bagi Anda, alat CI/CD harus mendukung semua bahasa yang merupakan bagian dari proyek tertentu. Jika tidak, Anda mungkin perlu menulis satu atau lebih plugin untuk alat tersebut.

Gambar Docker menjadi semakin penting untuk penyebaran perangkat lunak terdistribusi, modular, dan layanan mikro. Ini sangat membantu jika alat CI/CD Anda tahu cara menangani gambar Docker, termasuk membuat gambar dari kode sumber, binari, dan prasyarat Anda, dan menyebarkan gambar ke lingkungan tertentu. Sekali lagi, kekurangan ini, Anda mungkin perlu menulis plug-in atau skrip untuk mengimplementasikan fungsionalitas Docker yang Anda butuhkan. Demikian pula, Anda ingin alat CI/CD Anda mendukung Kubernetes dan sistem orkestrasi container lainnya yang Anda gunakan di lingkungan Anda.

Apakah pengembang Anda memahami CI/CD dan alat yang Anda pertimbangkan?

Prinsip CI dan CD mungkin tampak jelas, tetapi detailnya tidak. Berbagai alat CI/CD memiliki tingkat dukungan dan dokumentasi yang berbeda. Ada banyak buku tentang Jenkins, yang tidak mengejutkan karena ini adalah yang tertua dari kelompok itu. Untuk produk lain, Anda mungkin harus menyelidiki dokumentasi dan forum dukungan serta opsi dukungan berbayar sebagai bagian dari uji tuntas Anda dalam memilih alat.

Anda dapat memilih alat CI/CD yang berbeda untuk proyek yang berbeda

Meskipun panduan ini tentang memilih platform CI/CD, jangan berasumsi bahwa satu platform akan optimal untuk semua proyek pengembangan perangkat lunak Anda. Sebagian besar toko menggunakan beberapa bahasa dan lingkungan pemrograman, dan tidak semua platform CI/CD akan mendukung semuanya dengan baik.

Jangan ragu untuk memilih platform CI/CD yang paling sesuai untuk setiap proyek Anda daripada menemukan platform kompromi tunggal. Prinsip umum CI dan CD terbawa dari satu platform ke platform lain, meskipun skrip yang Anda tulis untuk mereka mungkin tidak selalu portabel. Meskipun waktu orientasi tambahan untuk setiap platform baru mungkin membebani tim pengembang Anda, itu kemungkinan besar lebih murah daripada perlu menyesuaikan alat CI/CD secara ekstensif.

Rencanakan migrasi CI/CD di masa mendatang

Sejalan dengan itu, jangan berasumsi bahwa platform CI/CD tertentu akan melayani kebutuhan proyek Anda selamanya. Selalu lindung nilai taruhan Anda, misalnya dengan menyimpan skrip di repositori daripada di dalam alat CI/CD.

Pilih Serverless CI/CD jika memungkinkan

Secara umum, penerapan cloud container lebih murah daripada penerapan instance server cloud, dan penerapan cloud tanpa server lebih murah daripada penerapan container. Sayangnya, beberapa platform CI/CD dapat berjalan tanpa server pada tulisan ini.

Tanpa server berarti wadah yang menjalankan proses yang diinginkan dibuat sesuai kebutuhan, umumnya sebagai respons terhadap suatu peristiwa. Untuk CI/CD, peristiwa pemicu umumnya berupa check-in kode ke cabang repositori tertentu; repositori Webhook kemudian meluncurkan proses tanpa server. Ketika proses selesai, sumber daya dilepaskan.

Salah satu dari beberapa platform CI/CD yang dapat berjalan tanpa server adalah Serverless CI/CD, bagian dari Serverless Framework Pro, versi yang disempurnakan dari Open source Serverless Framework. CI/CD tanpa server dioptimalkan untuk menerapkan aplikasi tanpa server dan saat ini hanya berjalan di AWS. Anda harus menentukan apakah itu mendukung aplikasi Anda dengan cukup baik untuk digunakan.

Di mana aset cloud Anda saat ini?

Untuk mengoptimalkan konfigurasi CI/CD berbasis cloud (atau aplikasi cloud apa pun), ada baiknya jika semua aset Anda "dekat" satu sama lain. "Dekat" dalam konteks ini sebagian mengacu pada lokasi geografis, dan sebagian mengacu pada lokasi jaringan.

Misalnya, jika database Anda berada di Australia dan aplikasi Anda berada di Amerika Utara, Anda akan mengalami jeda yang besar setiap kali aplikasi perlu membaca atau menulis data. Pada skala yang lebih kecil, jika aplikasi dan database Anda berada di zona ketersediaan (AZ) yang sama, latensi di antara keduanya akan diminimalkan. Jika mereka berada di zona yang berbeda di wilayah yang sama, latensi akan lebih tinggi, tetapi tidak setinggi jika mereka berada di wilayah yang berbeda.

Demikian pula, jika database Anda ada di Google Cloud Platform di Virginia dan aplikasi Anda di Microsoft Azure di Virginia, latensi akan lebih tinggi daripada jika keduanya berada di penyedia cloud yang sama di AZ yang sama. Semua ini juga berlaku untuk repositori Anda (yang pada dasarnya adalah database), perangkat lunak CI/CD Anda, aplikasi Anda yang sebenarnya, dan pengembang serta penguji Anda. Ini membantu jika semuanya "berdekatan", meskipun efek kelambatan tidak begitu mencolok dalam situasi ini seperti halnya untuk, katakanlah, permainan interaktif waktu nyata.

Jika pengembang dapat mendorong komit kode ke dalam repositori master dengan andal dan tanpa waktu tunggu yang nyata, mereka biasanya akan senang. Demikian pula, jika pengguna dan penguji cukup "dekat" dengan aplikasi untuk mendapatkan waktu respons sub-detik, mereka juga akan senang. Untuk perangkat lunak CI/CD, kuncinya adalah koneksi yang andal ke titik penerapan. Sedikit lag dapat ditoleransi selama tidak menyebabkan time-out atau paket yang jatuh.

Lakukan pembuktian konsep sebelum melakukan

CI/CD akan menjadi bagian penting dari infrastruktur Anda setelah Anda mengimplementasikannya sepenuhnya. Ingatlah hal itu saat Anda mempercepatnya.

Penting untuk melakukan pembuktian konsep yang ketat sebelum mulai meluncurkan pipeline CI/CD. Kocok bagian CI sebelum memulai fase CD. Pastikan Anda menggunakan rangkaian pengujian dan kemampuan rollback sebelum menghubungkan pipeline CI/CD apa pun ke instans produksi, dan terus memantau manusia hingga Anda yakin bahwa otomatisasinya sangat solid.

Punya kebutuhan lain mengenai CI/CD atau cloud computing pada umumnya? Segera kunjungi laman kami atau hubungi kami di [sales@btech.id] or [+62 811-111-8187]

Baca juga: JENIS-JENIS TRAINING KUBERNETES