(0275) 2974 127
Dalam pengembangan aplikasi modern, proses deployment menjadi salah satu tahap yang perlu dikelola dengan hati-hati. Setiap perubahan versi aplikasi berpotensi menimbulkan bug, downtime, penurunan performa, atau masalah kompatibilitas yang berdampak langsung kepada pengguna. Karena itu, tim DevOps membutuhkan strategi deployment yang dapat mengurangi risiko ketika versi baru aplikasi dirilis ke production.
Salah satu strategi yang banyak digunakan adalah Blue-Green Deployment. Metode ini memungkinkan tim menjalankan versi lama dan versi baru aplikasi secara berdampingan, kemudian mengalihkan traffic dari lingkungan lama ke lingkungan baru setelah versi terbaru dinyatakan siap.
Dengan pendekatan tersebut, proses perpindahan versi aplikasi dapat dilakukan dengan downtime yang sangat minim dan menyediakan jalur rollback yang relatif cepat apabila ditemukan masalah. Microsoft juga menjelaskan bahwa model blue-green mempertahankan versi lama tetap aktif ketika versi baru dipersiapkan sehingga traffic dapat dikembalikan ke versi sebelumnya jika terjadi insiden.
Blue-Green Deployment adalah strategi deployment yang menggunakan dua lingkungan aplikasi yang secara fungsional dibuat semirip mungkin, yaitu lingkungan Blue dan Green. Lingkungan Blue biasanya merupakan versi aplikasi yang sedang aktif melayani traffic production. Sementara itu, lingkungan Green digunakan untuk menyiapkan versi aplikasi yang baru. Versi baru terlebih dahulu dideploy ke lingkungan Green. Setelah proses deployment selesai, tim dapat melakukan pengujian, validasi konfigurasi, pemeriksaan performa, dan pemeriksaan kesehatan aplikasi tanpa langsung mengganti versi yang sedang melayani pengguna.
Jika lingkungan Green sudah dinyatakan siap, traffic production dialihkan dari Blue ke Green. Apabila terjadi masalah setelah perpindahan traffic, traffic dapat diarahkan kembali ke Blue selama lingkungan tersebut masih tersedia. Konsep dasarnya telah lama digunakan dalam praktik Continuous Delivery. Martin Fowler menjelaskan blue-green deployment sebagai pendekatan yang membuat proses perpindahan versi production menjadi lebih sederhana karena dua lingkungan disiapkan dan salah satunya menjadi lingkungan aktif pada satu waktu.
Secara sederhana, konsepnya dapat digambarkan sebagai berikut:
Blue → versi lama → melayani pengguna
Green → versi baru → diuji dan divalidasi
Setelah Green siap: Traffic Production → Green
Jika Green bermasalah: Traffic Production → kembali ke Blue
Istilah Blue-Green berasal dari penamaan dua lingkungan deployment yang digunakan secara bergantian. Tidak ada makna teknis khusus pada warna biru dan hijau. Keduanya hanya digunakan sebagai label untuk membedakan dua versi atau lingkungan aplikasi. Misalnya:
Dengan demikian, warna tersebut berfungsi sebagai konsep visual agar tim lebih mudah memahami lingkungan mana yang sedang aktif dan mana yang sedang dipersiapkan.
Blue-Green Deployment memiliki alur yang relatif sederhana, tetapi implementasinya dapat berbeda tergantung infrastruktur, load balancer, container platform, Kubernetes, cloud provider, dan sistem CI/CD yang digunakan. Secara umum, prosesnya dapat dilakukan melalui beberapa tahap berikut.
1. Menjalankan Versi Lama di Lingkungan Blue
Pada awal proses, versi aplikasi yang sedang digunakan pengguna berada di lingkungan Blue. Misalnya aplikasi saat ini menggunakan versi: Application v1.0
Traffic production diarahkan ke lingkungan tersebut sehingga pengguna tetap mendapatkan layanan seperti biasa.
2. Menyiapkan Lingkungan Green
Tim kemudian membuat atau menggunakan lingkungan Green untuk menjalankan versi aplikasi terbaru. Misalnya: Application v2.0
Lingkungan Green sebaiknya memiliki konfigurasi yang sama atau sangat mendekati lingkungan Blue, termasuk konfigurasi aplikasi, dependency, network, resource, dan komponen pendukung lainnya. Tujuannya agar pengujian terhadap Green dapat memberikan gambaran yang realistis mengenai perilaku aplikasi ketika menerima traffic production. Microsoft merekomendasikan pendekatan blue-green yang memungkinkan aplikasi dan infrastrukturnya diuji bersama sebelum traffic production dialihkan.
3. Melakukan Deployment ke Green
Versi baru kemudian dideploy ke lingkungan Green. Pada tahap ini, traffic production masih diarahkan ke Blue. Artinya, proses deployment dan pengujian versi baru tidak harus mengganggu pengguna yang sedang menggunakan versi lama.
4. Melakukan Pengujian
Setelah deployment selesai, tim dapat melakukan berbagai pemeriksaan pada Green, seperti:
Pengujian ini penting karena tujuan Blue-Green Deployment bukan sekadar menyediakan dua lingkungan, tetapi memberikan kesempatan untuk memvalidasi versi baru sebelum menerima traffic production.
5. Mengalihkan Traffic ke Green
Jika Green sudah memenuhi kriteria yang ditentukan, traffic production dialihkan dari Blue ke Green. Perpindahan traffic dapat dilakukan menggunakan berbagai mekanisme, misalnya:
Pada implementasi tertentu, perpindahan dapat dilakukan secara penuh sekaligus. Pada implementasi lainnya, traffic dapat dialihkan secara bertahap sesuai kemampuan platform. Sebagai contoh, Azure menjelaskan bahwa mekanisme routing seperti Azure Front Door dan Azure DNS dapat digunakan untuk mengalihkan traffic antara lingkungan blue dan green.
6. Memantau Versi Green
Setelah traffic dialihkan, monitoring tetap diperlukan. Tim dapat memantau indikator seperti:
Jika tidak ditemukan masalah, Green dapat ditetapkan sebagai lingkungan production baru.
7. Menonaktifkan Blue
Setelah versi Green terbukti stabil, lingkungan Blue dapat dikurangi skalanya atau dihentikan. Namun, keputusan untuk langsung menghapus Blue perlu disesuaikan dengan kebutuhan rollback dan biaya infrastruktur. Dalam beberapa sistem, Blue sengaja dipertahankan selama periode tertentu agar rollback dapat dilakukan dengan cepat jika masalah baru ditemukan setelah deployment.
Misalnya sebuah toko online menggunakan aplikasi v1.0 yang berjalan pada server Blue. Pada saat yang sama, developer telah menyelesaikan v2.0 dengan fitur pembayaran baru. Alurnya:
| Tahap | Blue | Green | Traffic |
|---|---|---|---|
| Awal | v1.0 | Belum digunakan | Blue |
| Deployment | v1.0 | v2.0 | Blue |
| Testing | v1.0 | v2.0 diuji | Blue |
| Validasi selesai | v1.0 | v2.0 siap | Blue |
| Cutover | v1.0 | v2.0 | Green |
| Stabil | Dapat dihentikan | v2.0 | Green |
| Masalah ditemukan | v1.0 masih tersedia | v2.0 bermasalah | Kembali ke Blue |
Contoh tersebut menunjukkan keunggulan utama strategi ini. Versi lama tidak langsung dihapus ketika versi baru mulai disiapkan sehingga masih tersedia sebagai jalur pemulihan.
Implementasi Blue-Green Deployment biasanya membutuhkan beberapa komponen pendukung.
1. Dua Lingkungan Aplikasi
Komponen utama adalah dua lingkungan yang mewakili versi lama dan versi baru. Kedua lingkungan tidak selalu harus berupa dua server fisik. Dalam cloud atau container environment, lingkungan tersebut dapat berupa deployment, cluster, task set, virtual machine, container group, atau resource lain sesuai arsitektur.
2. Traffic Router
Traffic router bertugas menentukan lingkungan mana yang menerima request pengguna. Komponen ini dapat berupa load balancer, reverse proxy, ingress controller, API gateway, service mesh, atau mekanisme DNS.
3. CI/CD Pipeline
Pipeline CI/CD membantu mengotomatisasi proses: Build → Test → Deploy Green → Validate → Switch Traffic → Monitor
Dengan otomatisasi, risiko kesalahan akibat proses manual dapat dikurangi.
4. Monitoring dan Observability
Monitoring sangat penting karena deployment belum benar-benar aman hanya karena aplikasi berhasil dijalankan. Tim harus mengetahui apakah versi baru mengalami peningkatan error, latency, penggunaan resource yang tidak normal, atau masalah bisnis setelah menerima traffic.
5. Mekanisme Rollback
Rollback menjadi salah satu alasan utama penggunaan Blue-Green Deployment. Karena versi lama masih tersedia, tim dapat mengembalikan traffic ke lingkungan sebelumnya apabila versi baru mengalami masalah.
Blue-Green Deployment menawarkan beberapa keuntungan, terutama untuk aplikasi yang membutuhkan availability tinggi.
1. Meminimalkan Downtime
Traffic dapat dialihkan dari lingkungan lama ke lingkungan baru tanpa harus menghentikan seluruh aplikasi untuk melakukan deployment. Karena itu, metode ini sering digunakan untuk aplikasi yang membutuhkan ketersediaan layanan tinggi. Microsoft memasukkan blue-green deployment sebagai salah satu pendekatan untuk meminimalkan downtime pada workload mission-critical.
Namun, perlu dipahami bahwa Blue-Green Deployment tidak otomatis menjamin zero downtime. Hasil akhirnya tetap bergantung pada desain aplikasi, mekanisme routing, health check, database, session management, dan proses cutover.
2. Rollback Lebih Cepat
Jika versi baru mengalami masalah, traffic dapat diarahkan kembali ke versi lama selama lingkungan lama masih tersedia. Hal ini membuat rollback tidak selalu membutuhkan proses redeployment dari awal.
3. Pengujian Lebih Aman
Versi baru dapat dipersiapkan dan diuji sebelum menerima traffic production secara penuh. Tim dapat melakukan validasi dalam lingkungan yang mendekati production tanpa langsung mengganti aplikasi yang sedang digunakan pengguna.
4. Mengurangi Risiko Deployment
Deployment menjadi lebih terkontrol karena versi lama tetap tersedia sebagai fallback. Strategi ini tidak menghilangkan seluruh risiko, tetapi dapat membatasi dampak kegagalan deployment.
5. Cocok untuk Otomatisasi
Blue-Green Deployment dapat diintegrasikan dengan pipeline CI/CD sehingga proses deployment, testing, approval, traffic switching, monitoring, dan rollback dapat diotomatisasi.
6. Memudahkan Pengelolaan Release
Tim dapat memisahkan proses deploy dari proses release. Versi baru dapat terlebih dahulu diletakkan di Green, kemudian dipromosikan menjadi versi production setelah memenuhi kriteria yang ditentukan.
Meskipun memiliki banyak keuntungan, Blue-Green Deployment bukan strategi yang selalu ideal untuk setiap aplikasi.
1. Membutuhkan Resource Lebih Besar
Pada periode tertentu, dua lingkungan harus berjalan secara bersamaan. Jika aplikasi membutuhkan banyak CPU, memory, storage, atau instance, biaya infrastruktur dapat meningkat. Microsoft juga mencatat bahwa blue-green deployment membutuhkan dua deployment yang berjalan secara bersamaan untuk periode tertentu.
2. Arsitektur Harus Mendukung
Aplikasi harus dirancang agar dua versi dapat berjalan berdampingan. Masalah dapat muncul jika versi lama dan baru tidak kompatibel dalam menggunakan database, cache, message queue, file storage, atau service eksternal.
3. Database Migration Dapat Menjadi Tantangan
Salah satu bagian paling sulit dalam Blue-Green Deployment adalah perubahan database. Misalnya versi lama menggunakan struktur: users.name, sedangkan versi baru mengharapkan: users.first_name
Jika perubahan dilakukan secara langsung dan versi lama masih berjalan, versi lama dapat mengalami error. Karena itu, perubahan database perlu dirancang agar kompatibel dengan kedua versi selama periode transisi. Pendekatan seperti backward-compatible migration, perubahan bertahap, atau pola expand-and-contract dapat digunakan sesuai kebutuhan aplikasi.
4. Tidak Selalu Efisien untuk Aplikasi Besar
Menjalankan dua lingkungan yang sama besar mungkin tidak ekonomis untuk semua workload. Organisasi perlu mempertimbangkan biaya resource, durasi overlap, dan kebutuhan availability sebelum menggunakan strategi ini.
5. Rollback Tidak Selalu Mudah
Rollback aplikasi mungkin relatif sederhana, tetapi rollback database atau perubahan data bisa jauh lebih kompleks. Jika versi baru telah mengubah data dengan cara yang tidak kompatibel, sekadar mengarahkan traffic kembali ke Blue belum tentu menyelesaikan masalah.
Blue-Green Deployment sering dibandingkan dengan Rolling Deployment karena keduanya digunakan untuk mengurangi dampak deployment.
| Aspek | Blue-Green Deployment | Rolling Deployment |
|---|---|---|
| Lingkungan | Dua lingkungan atau dua versi berjalan berdampingan | Versi lama digantikan secara bertahap |
| Traffic | Umumnya dialihkan ke lingkungan baru setelah validasi | Tetap berjalan selama instance/pod diperbarui bertahap |
| Rollback | Dapat cepat dengan mengembalikan traffic | Biasanya memerlukan proses rollout balik |
| Resource | Cenderung membutuhkan resource tambahan | Biasanya lebih hemat resource |
| Pengujian versi baru | Dapat dilakukan sebelum cutover | Dilakukan sambil rollout berlangsung |
| Kompleksitas | Lebih tinggi | Relatif lebih sederhana |
| Cocok untuk | Release yang membutuhkan cutover terkontrol dan rollback cepat | Update aplikasi secara bertahap |
Pada Kubernetes, strategi RollingUpdate merupakan mekanisme deployment bawaan untuk mengganti Pod secara bertahap, sedangkan Blue-Green membutuhkan pendekatan tambahan untuk mempertahankan versi lama dan baru sekaligus.
Blue-Green juga berbeda dengan Canary Deployment. Pada Blue-Green, konsep dasarnya adalah menyiapkan versi baru secara terpisah kemudian mengalihkan traffic kepadanya. Sementara Canary Deployment mengekspos versi baru kepada sebagian traffic atau kelompok pengguna terlebih dahulu sebelum diperluas ke seluruh pengguna.
| Aspek | Blue-Green | Canary |
|---|---|---|
| Versi baru | Disiapkan pada lingkungan terpisah | Diperkenalkan kepada sebagian traffic |
| Traffic awal | Umumnya tetap di versi lama sampai cutover | Sebagian traffic menuju versi baru |
| Pengujian production | Dapat dilakukan sebelum cutover | Dilakukan menggunakan sebagian traffic production |
| Rollback | Mengalihkan traffic kembali | Mengurangi atau menghentikan traffic ke versi baru |
| Kompleksitas routing | Relatif sederhana | Dapat lebih kompleks |
| Cocok untuk | Cutover cepat dan rollback | Progressive delivery dan validasi bertahap |
Argo Rollouts, misalnya, membedakan Blue-Green dari Canary: Blue-Green menjalankan versi lama dan baru secara bersamaan sebelum perpindahan traffic, sedangkan Canary mengekspos sebagian traffic ke versi baru dan dapat meningkatkan exposure secara bertahap.
Selain Rolling dan Canary, terdapat strategi Recreate Deployment. Pada metode Recreate, versi lama dihentikan terlebih dahulu sebelum versi baru dijalankan. Akibatnya, terdapat periode ketika aplikasi tidak tersedia.
| Aspek | Blue-Green | Recreate |
|---|---|---|
| Versi lama | Tetap berjalan sementara | Dihentikan sebelum versi baru |
| Versi baru | Dipersiapkan secara terpisah | Dijadikan pengganti setelah versi lama berhenti |
| Downtime | Dapat sangat minim | Umumnya terdapat downtime |
| Rollback | Relatif cepat jika versi lama masih tersedia | Lebih sulit jika versi lama sudah dihentikan |
| Resource | Lebih besar | Lebih hemat |
| Availability | Lebih baik | Lebih rendah selama deployment |
Dalam dokumentasi Argo Rollouts, strategi Recreate dijelaskan sebagai metode yang menghapus versi lama sebelum menjalankan versi baru sehingga dua versi tidak berjalan secara bersamaan, tetapi konsekuensinya adalah downtime selama proses tersebut.
Blue-Green Deployment dapat diterapkan pada Kubernetes menggunakan berbagai pendekatan. Kubernetes Deployment secara native menyediakan strategi seperti RollingUpdate, sedangkan kebutuhan Blue-Green yang lebih advanced dapat dibantu oleh tool progressive delivery seperti Argo Rollouts.
Argo Rollouts menyediakan strategi Blue-Green dengan konsep active service untuk traffic production dan preview service untuk versi baru. Dengan mekanisme tersebut, versi baru dapat diuji melalui preview service sebelum dipromosikan menjadi versi aktif. Secara konseptual:
Blue: Application v1 → Active Service → UserGreen:
Application v2 → Preview Service → TestingSetelah validasi:
Application v2 → Active Service → User
Argo Rollouts juga menyediakan fitur seperti pre-promotion analysis, post-promotion analysis, delay sebelum scale-down, dan integrasi dengan metric provider untuk membantu proses progressive delivery.
Blue-Green Deployment sangat cocok dikombinasikan dengan pipeline CI/CD. Contoh alurnya:
1. Developer melakukan perubahan kode
↓
2. Source code masuk ke repository
↓
3. CI menjalankan build dan automated test
↓
4. Artifact atau image dibuat
↓
5. Versi baru dideploy ke Green
↓
6. Health check dan automated test dijalankan
↓
7. Tim atau sistem melakukan validasi
↓
8. Traffic dialihkan ke Green
↓
9. Monitoring dilakukan
↓
10. Green dipertahankan sebagai production
↓
11. Blue dihentikan atau dipertahankan sementara sebagai rollback
Pipeline tersebut dapat dibuat manual pada tahap tertentu atau sepenuhnya otomatis berdasarkan tingkat kematangan proses deployment dan monitoring.
Sebelum menerapkan strategi ini, ada beberapa hal penting yang sebaiknya diperiksa.
Blue-Green Deployment cocok digunakan pada aplikasi yang membutuhkan availability tinggi dan downtime seminimal mungkin, terutama ketika proses rilis dilakukan secara rutin dan tim membutuhkan mekanisme rollback yang cepat jika terjadi masalah. Strategi ini juga lebih efektif apabila organisasi sudah memiliki pipeline CI/CD, monitoring yang memadai, serta infrastruktur yang mampu menjalankan versi lama dan versi baru aplikasi secara bersamaan.
Selain itu, aplikasi sebaiknya memiliki kompatibilitas yang baik antara versi lama dan versi baru selama masa transisi. Hal ini penting karena kedua versi dapat berjalan dalam periode yang sama, terutama ketika proses perpindahan traffic dan validasi sedang dilakukan. Untuk workload yang bersifat mission-critical, pendekatan ini dapat membantu tim menguji versi terbaru terlebih dahulu sebelum traffic production dialihkan sepenuhnya.
Meskipun demikian, Blue-Green Deployment tidak selalu menjadi pilihan terbaik untuk setiap aplikasi. Strategi ini dapat kurang sesuai jika menjalankan dua lingkungan membutuhkan biaya infrastruktur yang terlalu besar, aplikasi sulit beroperasi dalam dua versi sekaligus, atau perubahan struktur database tidak mudah dibuat kompatibel selama proses transisi. Oleh karena itu, pemilihan strategi deployment perlu mempertimbangkan kebutuhan availability, kompleksitas aplikasi, biaya infrastruktur, serta kesiapan sistem CI/CD dan monitoring.
Agar implementasi Blue-Green Deployment berjalan lebih aman, beberapa praktik berikut dapat diterapkan.
Tidak selalu. Blue-Green Deployment dirancang untuk membantu meminimalkan downtime saat proses rilis aplikasi, tetapi penerapannya tidak otomatis menjamin layanan benar-benar bebas gangguan. Tingkat downtime tetap dipengaruhi oleh berbagai faktor teknis, seperti mekanisme pengalihan traffic, konfigurasi load balancer dan health check, arsitektur aplikasi, pengelolaan session pengguna, serta kompatibilitas database.
Selain itu, penggunaan DNS sebagai mekanisme cutover juga dapat memengaruhi proses perpindahan karena perubahan DNS tidak selalu diterapkan secara langsung oleh seluruh pengguna. Koneksi aktif yang masih berlangsung juga perlu diperhatikan agar perpindahan versi tidak menyebabkan gangguan pada pengguna.
Oleh karena itu, Blue-Green Deployment lebih tepat disebut sebagai strategi untuk mencapai downtime yang sangat minim, bukan jaminan zero downtime. Dengan perencanaan yang baik, monitoring yang memadai, konfigurasi routing yang tepat, serta mekanisme rollback yang jelas, risiko gangguan saat deployment dapat ditekan secara signifikan.
Bayangkan sebuah website e-commerce sedang menjalankan versi 3.0. Versi tersebut berada pada lingkungan Blue dan melayani seluruh pengguna. Developer kemudian merilis versi 4.0 dengan peningkatan sistem checkout. Tim melakukan langkah berikut:
Jika setelah cutover ditemukan masalah serius, traffic dapat diarahkan kembali ke Blue sesuai prosedur rollback. Contoh ini memperlihatkan bahwa Blue-Green Deployment bukan sekadar teknik menggandakan server, tetapi merupakan strategi release management yang menggabungkan deployment, validasi, traffic switching, monitoring, dan rollback.
Blue-Green Deployment adalah strategi deployment yang menjalankan versi lama dan versi baru aplikasi pada dua lingkungan terpisah, kemudian mengalihkan traffic production ke versi baru setelah proses deployment dan validasi selesai. Pendekatan ini membantu mengurangi risiko deployment, meminimalkan downtime, dan menyediakan mekanisme rollback yang relatif cepat karena versi sebelumnya masih dapat dipertahankan selama masa transisi.
Meski demikian, Blue-Green Deployment membutuhkan resource tambahan dan perencanaan yang matang, terutama terkait database migration, session, cache, storage, external service, traffic routing, monitoring, serta rollback. Karena itu, strategi ini paling efektif ketika didukung oleh CI/CD, automated testing, observability, infrastructure automation, dan prosedur rollback yang jelas. Dalam lingkungan Kubernetes, implementasi Blue-Green dapat dilakukan dengan bantuan tool progressive delivery seperti Argo Rollouts, sedangkan pada cloud platform tertentu tersedia mekanisme routing dan deployment yang dapat mendukung pola serupa.
Bagi tim DevOps yang membutuhkan proses rilis lebih aman dan terkontrol, Blue-Green Deployment dapat menjadi salah satu pilihan strategi yang layak dipertimbangkan, terutama untuk aplikasi yang membutuhkan availability tinggi dan kemampuan rollback yang cepat. Untuk pembahasan lebih lanjut mengenai deployment, server, cloud computing, DevOps, dan teknologi hosting, Anda juga dapat mengikuti artikel teknologi di blog Hosteko. Jika membutuhkan infrastruktur untuk menjalankan aplikasi dan website, pemilihan layanan hosting yang sesuai dengan kebutuhan resource dan arsitektur aplikasi juga menjadi bagian penting dari strategi deployment yang stabil.
Setelah mengetahui berbagai rekomendasi aplikasi membaca novel, langkah berikutnya adalah menentukan platform yang paling sesuai…
Setelah mengetahui cara kerja dan hal yang perlu diperhatikan dalam memilih aplikasi membaca novel, sekarang…
High Performance Computing (HPC) adalah pendekatan komputasi yang menggabungkan sumber daya komputasi seperti CPU, GPU,…
Password spraying adalah salah satu jenis serangan siber yang menargetkan banyak akun menggunakan satu atau…
Membaca novel kini tidak harus selalu menggunakan buku fisik. Perkembangan buku digital dan aplikasi membaca…
Bagi pengguna Linux, mengedit file konfigurasi merupakan aktivitas yang cukup sering dilakukan, terutama ketika mengelola…