DevOps dan CI/CD hadirkan automasi proses build, test, dan release dari sebuah aplikasi, sehingga kami tak perlu lagi melakukannya secara manual satu-persatu.
Muhammad Fahry
25 Januari 2021 • 3 mins reading
Apa yang terlintas di benak Anda ketika mendengar kata “DevOps”? Apakah sebuah profesi? Atau sekelompok tim yang memiliki tugas tertentu? Sebenarnya kedua hal tersebut tidak 100% salah. Namun, sejatinya DevOps adalah sebuah culture yang menekankan kolaborasi antara “Dev” dari developer dan “Ops” dari operation. Sebelum adanya DevOps, kedua posisi ini benar-benar terpisah. Budaya inilah yang kemudian berhasil menjembatani keduanya hingga tidak ada lagi dinding pembatas di antara mereka. Di BRI, budaya DevOps membantu kami dalam mempercepat proses build, test, hingga release dari berbagai aplikasi digital banking BRI.
Sebelum mulai menerapkan DevOps, tugas tim developer dan tim operation di BRI tidak berkaitan satu sama lain. Tim developer akan mengembangkan sebuah aplikasi sesuai arahan tim bisnis, melakukan testing terhadap aplikasi tersebut, kemudian memberikannya kepada ke tim operation. Setelah itu, tim developer tak lagi campur tangan pada tahap-tahap selanjutnya seperti memonitoring aplikasi, response time, dan sebagainya. Tim operation yang akan bertanggung jawab untuk menjalankan aplikasi dan melakukan maintenance setelah proses produksi.
Pemisahan antara developer dan operations ini tidak bisa lagi diterapkan di era digital yang serba cepat. Untuk itu, sejak tahun 2018 kami mulai menerapkan culture DevOps dan mempekerjakan DevOps Engineer. DevOps Engineer di BRI mengambil peran dari awal proses pengembangan aplikasi hingga perilisan aplikasi. Mulai dari mempersiapkan server, build aplikasi, hingga melakukan deployment. Sebelumnya, tahapan-tahapan tersebut harus dilakukan secara manual dan bisa memakan waktu hingga berjam-jam. Dengan hadirnya DevOps, seluruh pekerjaan tersebut dapat diotomasi dan bisa diselesaikan dalam jangka waktu 3 menit saja. Untuk melakukan itu semua, Kami hanya perlu menciptakan sebuah Continuous Integration/Continuous Delivery (CI/CD) pipeline, yaitu langkah-langkah pekerjaan yang akan dilakukan secara otomatis oleh “robot”.
Untuk menciptakan CI/CD pipeline yang fleksibel, kami memanfaatkan aplikasi Jenkins. Secara sederhana, Jenkins adalah open source automation server berbasis Java yang dapat melakukan otomatisasi proses Continuous Integration/Continuous Delivery. Beberapa kelebihan dari Jenkins dibanding CI/CD tools lainnya adalah:
Proses CI/CD ini terbagi menjadi dua tahap, yaitu continuous integration yang terdiri dari version control, build, dan test, serta continuous delivery yang merupakan proses deployment aplikasi. Pertama, kami akan menjelaskan tahapan-tahapan yang ada di dalam proses CI:
Proses CI dimulai dari tahap version control. Pada tahap ini, para developer akan mengumpulkan source code hasil pekerjaan mereka ke dalam satu wadah. Kami memanfaatkan version control berbasis Git dan source code management Bitbucket.
Setelah semua source code terkumpul, maka akan dilakukan proses build. Pada tahap ini, source code beserta package-package terkait yang dibutuhkan akan digabungkan menjadi satu kesatuan aplikasi. Di proses build ini, kami juga melakukan build code app dalam bentuk docker images.
Tahap selanjutnya dalam proses CI adalah testing. Pada tahap ini, “robot” akan melakukan berbagai jenis tes untuk menguji kelayakan dan kesempurnaan dari suatu aplikasi. Kami menggunakan plugin Katalon untuk automasi proses testing, SonarQube untuk melakukan pengecekan kualitas code, serta SAST (Checkmarx) untuk melakukan pengecekan vulnerability dari suatu code .
Jika dalam proses CI ini Jenkins menemukan masalah, maka tools ini akan memberikan notifikasi agar developer bisa cepat menangani masalah tersebut. Namun jika tidak ditemukan masalah, maka Jenkins akan melanjutkan ke proses CD. Akronim “CD” ini sebenarnya memiliki dua kepanjangan, yaitu:
Continuous Deployment yang berarti proses deployment akan dilakukan secara otomatis tanpa melalui approval terlebih dahulu. Dengan Continuous Deployment, keseluruhan proses CI/CD dilakukan tanpa campur tangan manusia, mulai dari building hingga deployment ke server production.
Continuous Delivery adalah saat dimana Jenkins akan meminta approval sebelum melakukan deployment. Jika kami mengizinkannya, maka proses deployment ke server production akan dilanjutkan secara otomatis dengan plugin Helm Chart Kubernetes. Kami melakukan proses CD dengan cara ini karena kami harus mendapatkan approval dari Kepala Divisi serta memastikan bahwa aplikasi tersebut telah mengantongi izin dari OJK.
Hingga saat ini, kami telah menerapkan DevOps pada hampir seluruh produk digital yang kami bangun, mulai dari Pinang, Ceria, Delima, Sabrina, Pasar.Id, dan lain-lain. Culture ini juga membantu kami dalam mengurangi risiko kegagalan dalam pembangunan aplikasi, melakukan recovery secara lebih cepat, serta meningkatkan frekuensi deployment. Sehingga, kami dapat menjawab berbagai kebutuhan nasabah BRI secara lebih cepat dan tepat.
Muhammad Fahry
DevOps Team Leader