Umumnya, di dalam development atau pengembangan program terdapat Implementasi CI/CD Pipeline. Sebelumnya, apa itu CI/CD? CI/CD atau Continues Integration/Continues Deployment adalah “jembatan” antara tim operasional dan development dengan melakukan automasi pembangunan, testing, dan perilisan aplikasi.
CI/CD juga berguna dalam membantu developer dan tester dalam melakukan rilis dan update aplikasi atau software dengan lebih cepat dan aman, terutama karena CI/CD dilakukan dalam ‘environment’ yang terstruktur. Ingin tahu lebih lanjut tentang implementasi CI/CD Pipeline? Simak artikel berikut lebih lanjut ya.
Apa Itu DevOps?
Sebelum kita bahas Implementasi CI/CD Pipeline, kita akan memulai dengan memahami apa sih DevOps itu?
Dalam software development, DevOps adalah salah satu pendekatan development yang melakukan pengembangan, testing, integrasi, monitoring secara terus menerus atau on-the-fly. Contohnya, jika kamu sering main game, tidak jarang kita mendengar istilah “alpha” atau “beta”. Jika sebuah software masih berlabel alpha atau beta, bisa dipastikan development software tersebut belum sepenuhnya selesai. Mungkin pertanyaan yang muncul di kepala adalah “kenapa dirilis kalau belum selesai?”
Proses DevOps ini sudah digunakan berbagai perusahaan-perusahaan besar dalam mengembangkan software dan aplikasi menggunakan feedback, baik dari tim produksi atau customer. Feedback-feedback tersebut akan menyebutkan apa yang salah dan benar dari rilis yang ada, kemudian tim developer akan melakukan pengembangan lebih lanjut ke software tersebut. Siklus tersebut akan diulang beberapa kali sampai hasil yang diinginkan tercapai. Dengan begitu, software yang dikembangkan memakan waktu lebih singkat untuk dirilis, sedangkan perbaikan dan update selanjutnya dilakukan setelah rilis. Tentunya, customer juga lebih mudah puas, dan kepuasan customer jadi tujuan semua perusahaan modern.
Manfaat dari Implementasi CI/CD Pipeline
Jika kamu adalah seorang software developer, pastinya kamu ingin software yang dibuat menjadi lebih mudah menjangkau customer, bukan? Justru karena itu, CI/CD Pipeline berfungsi sebagai pendorong proses pengembangan software sekaligus mengurangi resiko dalam setiap tahap pengembangan dan lebih mudah mencapai tujuan akhir – mencapai customer.
Berikut beberapa manfaat implementasi CI/CD Pipeline:
- Mendapatkan Feedback Lebih Cepat Menggunakan CI Tools
Untuk setiap code yang ditulis, setiap tes akan berjalan secara bersamaan untuk menjaga kestabilan pengembangan. Feedback yang lebih cepat membantu untuk memeriksa kualitas dan kegunaan dari setiap code.
- Visibilitas yang Lebih Baik
Menggunakan CI/CD Pipeline, keseluruhan dari pengembangan, hasil tes, dan masalah dapat lebih mudah dianalisis. Sifat CI/CD Pipeline yang transparan ini memungkinkan developer untuk mengatur perubahan dan menghindari kerusakan pada software.
- Deteksi Bug Lebih Awal
CI/CD memiliki fungsi tes otomatis, melalui tes otomatis ini akan lebih mudah mendeteksi bug pada tahap pengembangan awal, jadi kamu tidak perlu khawatir dikejutkan dengan error pada detik-detik terakhir.
Tahap-Tahap dalam Implementasi CI/CD Pipeline
Gambar di atas adalah gambaran tentang arus dari pengembangan software menggunakan CI/CD Pipeline, dan bagaimana software akan bergerak dari tahap ke tahap hingga bisa diterbitkan atau digunakan customer. Berikut adalah penjelasan dari setiap proses CI/CD Pipeline.
- Developer akan menulis code yang akan dieksekusi melalui Version Control system (contohnya git, svn, dsb.)
- Setelah itu, software tersebut akan memasuki tahap Build. Pada tahap ini, developer akan melanjutkan codenya, code tersebut akan dikembalikan ke Version Control untuk pembaruan. Code baru dan yang mula ditulis akan digabungkan, dan akan di-compile menggunakan Compiler.
- Setelah tahap Build selesai, kamu akan memasuki tahap Testing. Pada tahap ini akan dilakukan berbagai jenis tes untuk menguji kelayakan dari software.
- Setelah tahap Testing selesai, akan dimulai tahap Deploy. Pada tahap Deploy, kamu akan menjalankan software ke staging server atau test server. Staging server atau test server berlaku sebagai simulasi dan kamu bisa melihat code atau software melalui simulator tersebut.
- Jika tahap Deploy berhasil, kamu akan berlanjut ke tahap Auto Test. Jika keseluruhan software yang dikembangkan sudah dapat berjalan baik, maka software kamu sudah dapat dijalankan ke produksi (Deploy to Production).
- Dalam setiap tahap, jika ada error dan semacamnya, kamu bisa menghubungi tim developer untuk membenarkan software tersebut, ini disebut sebagai Production Feedback. Developer akan memperbarui versi melalui Version Control, dan setiap tahap di atas akan berulang kembali. Siklus tersebut akan berulang sebanyak mungkin hingga diperoleh code yang dapat dijalankan ke server produksi, di mana kita dapat mengukur dan memvalidasi code. (Measure + Validate).
Tools untuk proses CI/CD
Dalam implementasi CI/CD Pipeline, menggunakan tools dapat melakukan automasi CI/CD dan memastikan software yang dikembangkan dapat diproduksi dengan baik.
- Open-Source Tools
Pada beberapa konteks bisnis atau permintaan customer, kamu bisa menyesuaikan budget dengan menggunakan open-source tools untuk melakukan automasi pada proses CI/CD. Contohnya Jenkins.
- Cloud atau layanan Self-Hosting
Untuk melakukan self-host pada aplikasi CI/CD kamu, tools seperti Jenkins atau Cruise Control bisa membantu kamu untuk setup, mengatur, dan memonitor aplikasi lebih efektif.
- Build Status
Sangat penting buat kamu untuk memilih tools yang memudahkan kamu memonitor keseluruhan proses (transparan). Contohnya, melalui notifikasi, email, atau bentuk komunikasi lainnya.
Tantangan dalam CI/CD
Meski CI/CD digambarkan sebagai metode development yang sangat efektif dan efisien, tetapi juga harus kamu perhatikan tantangan-tantangan yang mungkin saja ada ketika kamu melakukan implementasi CI/CD Pipeline. Contohnya, strategi disiplin antara developer untuk mengidentifikasi masalah, jika tidak dapat berjalan baik, sistem feedback dari CI/CD tidak akan berfungsi baik pula.
Dengan adanya versi-versi baru yang dikembangkan pada setiap tahap, terutama jika sering ditemukan error atau kesalahan, sangat besar kemungkinannya untuk membuat proses development jauh lebih lambat dari yang ditargetkan. Tantangan yang sering sekali ditemukan adalah sumber daya dan tim developer yang cenderung tidak bisa beradaptasi pada tools-tools lain.
Penutup
Zaman sekarang, setiap perusahaan, baik besar atau kecil tidak lain menginginkan produksi yang cepat, efektif, dan efisien. Terutama dalam software development, pengembangan software dan rilis yang cepat menjadi kunci dalam menjangkau customer. Implementasi CI/CD Pipeline dalam software development semakin digemari oleh developer, baik amatir atau mereka yang sudah senior sekalipun. Jadi, jika kamu tertarik mencoba, setidaknya kamu sudah baca artikel ini untuk mendapat gambaran tentang apa itu implementasi CI/CD Pipeline.