Pengenalan CI/CD

Pendahuluan

Katakanlah Anda akan mengembangkan sebuah aplikasi, proses yang akan terjadi adalah kurang lebih seperti gambar dibawah:

Pada fase awal, misalnya, Anda memiliki ide, kemudian mulai mendefinisikan fungsionalitas (fitur aplikasi), kemudian melakukan coding. Setelah coding selesai, testing dilakukan. Setelah lolos test, dilakukan build project dan deploy agar bisa diakses oleh user.

Ternyata aplikasi Anda disukai, disini kita akan masuk fase kedua tentu, dimana fitur akan ditambahkan, memperbaiki bugs atau meningkatkan performance.

Dengan berjalannya proses diatas, Anda perlu melakukan tracking perubahan pada aplikasi. Untuk itu digunakan versioning.

Side Note: Salah satu pendekatan version numbering, adalah 3 digit version:

  • Digit Pertama : Perubahan mayor, misalnya perubahan framework.
  • Digit Kedua: Perubahan minor, misalnya penambahan fitur.
  • Digit Ketiga: Patch, misalnya perubahan UI yang minim.

Jika Proses ini dilaukan terus menerus, Anda akan memerlukan tools untuk manajemen version.

CI/CD

Jadi CI/CD adalah inti dari proses DevOps, dimana bertujuan proses development hingga deployment dapat dilakukan secara otomatis.

CI – Continuous Integration

Pada CI, terjadi pada saat sisi development, dimana versioning dan testing code dari team developer dilakukan.

Adalah saat umum dalam aplikasi real life, akan terdiri dari team developer, dimana setiap developer akan memiliki copy code tersendiri, dan melakukan perubahan masing-masing.

Proses CI ini berguna memastikan integrasi code dari masing-masing developer ke main branch berjalan dengan lancar.

Rule yang diterapkan dalam CI adalah, Developer harus mengintegrasikan code yang mereka buat ke main branch sesering mungkin. Jadi setiap perubahan kecil terjadi, lakukan merging ke main branch dan lakukan testing.

CD – Continuous Deployment / Delivery

CD dapat memiliki dua pendekatan, Continues Delivery atau Continues Deployment.

Aplikasi yang kita buat tidak serta merta di deploy ke production environment. Alasannya adalah, kita sebagai developer tidak yakin perubahan yang dibuat tidak akan menyebabkan masalah. Jika menggunakan contoh aplikasi besar seperti Facebook atau Linkedin, dimana dependency antara code dan library sangat lumrah, perubahan kecil dapat membuat fitur lainnya tidak berfungsi.

Umumnya dilakukan deployment ke multistage, dimana setiap stage dilakukan testing. Setup yang umum digunakan adalah Dev – Testing – Production.

Continuous Deployment

Pada continuous deployment, code akan dibuat, ditest dan deploy pada environment yang berbeda. Dan proses deployment ke production stage dilakukan secara otomatis, tidak ada manual approval.

Pertama aplikasi akan didepoy ke Dev Stage, disini akan dilakukan automated testing seperti unit test, functional test, code analysist test (untuk memastikan code ditulis dengan cara yang benar agar maintenance mudah dilakukan).

Jika lolos dari testing diatas, aplikasi akan dideploy ke Staging sering disebut Testing atau pre-Prod environment. Environment sudah disetting identik dengan production environment. Disini biasanya dilakukan testing performance seperti load tests, regression tests.

Jika lolos dari Staging/pre-Prod area, berikutnya aplikasi dideploy ke Production dan sudah siap digunakan oleh user.

Continuous Delivery

Automated testing tidak bisa dikatakan 100% reliable. Karena bisa saja test code yang dibuat terlalu rumit, tidak cukup tenaga kerja untuk membuat unit test atau mungkin pihak manajemen tidak confident dengan automated deployment, jadi diperlukan orang untuk melakukan approval.

Jadi pada continuous delivery, deployment ke production dilakukan secara manual dimana ada team untuk melakukan manual testing, lalu melakukan deployment.

Kesimpulan

Jadi secara garis besar CI/CD pipeline adalah seperti yang ditunjukan diagram berikut

Sharing is caring:

Leave a Comment