Kali ini admin ingin berbagi tahap-tahap auto scaling web server di alibaba cloud. Artikel ini tidak terlalu teknis, jadi nanti hanya memberikan garis besar nya saja dan diberikan tips sesuai implementasi yang telah dilakukan oleh admin. Semoga artikel selanjutnya bisa membahas secara teknis bagaimana melakukanya.
Jika teman-teman ada pengalaman terkait hal ini, mari diskusi dibawah. 🙂
Admin
Arsitektur
Load Balancer ---> Auto Scaling --> ECS
Tools
- PHP Application
- Terraform
- Ansible
- Packer
- GitLab
1. Proses Continuous Integration
Disini aplikasi yang akan di deploy berbasi PHP dan siap untuk di package menjadi VM image. Source code berada di GitLab server.
Build Image
Dalam tahap melakukan pembuatan VM image, admin menggunakan tools: Packer dan Ansible.
Kenapa menggunakan tools tersebut?
Proses pembuatanya berada di Alibaba Cloud dan tidak membebani resource local, baik network dan CPU/Mem. Salah satu software Cloud Native yang juga dipakai untuk membuat image di cloud provider lain seperti GCP dan AWS. Proses pembuatanya menggunakan Code, jadi cocok jika menerapkan IaC.
Packer disini untuk membuat ECS image yang nantinya sebagai image yang akan dipakai oleh Auto Scaling Configuration.
Ansible membantu mengotomatisasi semua perintah linux seperti instalasi web server, konfigurasi, copy, dan lain sebagainya.
Alur pembuatanya:
- Developer membuat perubahan pada repositori aplikasi.
- GitLab CI pada repositori tersebut membaca perubahan sesuai rule yang diterapkan.
- Pipeline GitLab berjalan untuk mengeksekusi Packer binary.
- Packer berjalan (running) bersama Ansible dan melakukan pembuatan image di Alibaba Cloud (ECS).
- Jika selesai, image baru akan terbentuk dan informasi terkait image ID terlihat di terminal / job’s log pipeline GitLab.
2. Proses Continuous Delivery
Tahap ini dipakai untuk meluncurkan hasil dari proses pembuatan VM image.
Infrastructure Creation
Pembuatan infrastruktur baiknya menggunakan code agar perubahan yang dibuat terlihat oleh engineer lain. Jika anda seorang single fighter tentu juga berguna untuk dokumentasi apa saja yang anda buat di cloud provider. Tapi jika anda kurang terbiasa dengan code, anda bisa menggunakan web console.
Disini admin menggunakan Terraform sebagai tools yang dapat membantu membuat semua terkait infra, diantaranya:
- Load Balancer (ALB) + ALB Listener
- ALB Server Group + ALB Server Group Attachment
- ESS Scaling Group + ESS Scaling Group Configuration
- ESS Scaling Rule + ESS Alarm
Semua resources diatas ditangani oleh Terraform, resources tersebut berbentuk code jadi admin letakkan pada repositori GitLab. Untuk menjalankanya cukup membuat pipeline di repositori tersebut.
Agar proses build image terintegrasi dengan pipeline Terraform. GitLab mendukung trigger pipeline dari repositori lain.
Rolling Update
Rolling update yang admin terapkan dengan cara scanning latest image yang di build pada continuous integration. Untuk momentum perubahan dari image lama ke image baru, admin menerapkan schedule task 1 menit setelah menjalankan pipeline Terraform akan dilakukan rolling update image, schedule task ini dibuat di Terraform menggunakan ESS Schedule Task.
Admin LUKMANLAB, DevOps Engineer, Site Reliability Engineer, System Administrator.