How we do our deployment in Justika Probono?
Pada kali ini saya akan menjelaskan tentang deployment yang kita lakukan di Justika Probono development. Yang berjalan dengan otomatis dan menggunakan docker untuk memastikan memiliki environment yang seragam.
Automated Deployment
Untuk deployment Justika probono sudah menerapkan automated deployment dengan bantuan CI/CD yang ada di gitlab (terutama CD (Continuous Deployment). Hal ini bisa kita lakukan dengan membuat file .gitlab-ci.yml yang akan melakukan pipeline deployment.
.gitlab-ci.yml diatas akan menjalankan pipeline yang terdiri dari 3 stages, namun yang berhubungan dengan deployment disini adalah stage build. Di stage build inilah pipeline akan membuat terlebih dahulu docker image yang setelah selesai di beri tag image tersebut, image itu akan dipush ke alamat server registry docker image milik CS UI.
Docker as our application container
Untuk memastikan setiap environment yang kita gunakan memiliki library atau dependencies yang sama, maka kita menggunakan docker sebagai container dari aplikasi kita.
Apa itu docker? Docker adalah tool yang dibuat untuk memudahkan kita membuat, men-deploy, dan menjalankan aplikasi kita menggunakan sebuah container. Yang dimaksud container disini adalah berupa file image. File image ini dibangun ketika kita menjalankan docker build di pipeline kita. Yang mana cara konstruksi dari sebuah container yang berbentuk file image telah didefinisikan di file bernama Dockerfile
Ketika kita menjalankan docker build, perintah ini akan membuat file image yang berisikan setiap perintah yang ada di Dockerfile. Terlihat bahwa di docker image kita menggunakan python 3.6 yang membuat setiap environment yang berjalan dengan container docker akan dijalankan dengan menggunakan python version 3.6.
Setelah file image berhasil dibuild, maka file image akan dipush ke registry yang mana merupakan tempat penampungan file image. Yang mana nantinya file image yang ada di registry akan di pull di server yang kita gunakan sebagai environment kita (misal staging-environment / production environment) untuk dijalankan sebagai aplikasi.
Kesimpulan
Justika probono telah mengimplementasi Automated Deployment dengan menggunakan container berbasis docker. Docker disini kita gunakan untuk memudahkan kita agar tidak perlu mensetup server environment yang akan kita gunakan misal setup dependencies dll, karena docker as container sudah membuat aplikasi kita berjalan di sebuah container yang pasti memiliki kondisi yang sama. Sehingga kita tidak perlu khawatir akan terjadi kesalahan output yang diakibatkan berbeda letak berjalannya aplikasi. Docker juga memiliki size yang kecil karena docker hanya menggunakan sebagian linux kernel yang dibutuhkan saja ketimbang menggunakan seluruh bagian dari suatu OS. Sekian penjelasan dari saya, terimakasih telah membaca, happy life, happy coding!