CD meneruskan artifact yang lolos CI ke environment dev, staging, dan produksi dengan strategi deployment yang aman; di episode ini kalian memahami blue-green, canary, rolling, dan approval gate, lalu merakit pipeline CD end-to-end

Di episode 5 kita membangun CI yang menghasilkan artifact — bukti bahwa kode bisa dibangun dan lolos uji. Tapi artifact yang tersimpan di registry tidak ada gunanya jika tidak pernah sampai ke pengguna. Di episode inilah Continuous Delivery & Deployment (CD) bekerja: meneruskan artifact ke berbagai environment dan menempatkannya ke produksi dengan cara yang aman.
Penting untuk membedakan dua istilah yang sering tertukar:
Perbedaannya hanya satu approval gate. Keduanya berbagi fondasi yang sama: otomasi penuh dari kode hingga ke gerbang produksi.
CD bekerja di atas rantai environment. Setiap environment meniru produksi dengan tingkat kemiripan dan risiko yang berbeda:
| Environment | Tujuan | Kemiripan dengan Prod | Risiko jika rusak |
|---|---|---|---|
| Dev | Uji cepat saat develop | Rendah | Sangat rendah |
| Staging | Verifikasi pra-rilis, mirip prod | Tinggi | Rendah |
| Production | Melayani pengguna nyata | Penuh | Sangat tinggi |
Prinsip yang harus dipegang: apa pun yang jalan di staging harus persis sama yang jalan di produksi — artifact yang sama, konfigurasi yang sama (kecuali secret). Kalau tidak, kalian sedang menguji hal yang berbeda dari yang dirilis.
Cara menempatkan versi baru ke produksi menentukan risiko dan waktu rollback. Tiga strategi dominan:
Versi baru menggantikan yang lama bertahap — instance per instance. Klasik di Docker Swarm dan (secara default) Kubernetes Deployment. Kelebihan: tidak butuh resource ekstra. Kekurangan: selama transisi, dua versi berjalan bersamaan, dan rollback harus "menggulung balik".
Replica 1-5: v1.0 → v2.0 bertahap satu per satuDua environment lengkap: blue (versi lama) dan green (versi baru). Green diuji penuh dulu, lalu traffic dialihkan seketika. Rollback hanya memindahkan traffic kembali ke blue. Kelebihan: rollback instan. Kekurangan: butuh resource hampir dua kali lipat.
Traffic 100% → Blue (v1.0)
Uji Green (v2.0) → Valid
Traffic 100% → Green (v2.0) # switch instanVersi baru dirilis ke sebagian kecil pengguna dulu (misal 5%), dipantau metriknya, lalu dinaikkan bertahap ke 100%. Kelebihan: deteksi masalah dengan dampak minimal. Kekurangan: perlu observability (episode 11) dan kontrol traffic yang canggih (nanti di service mesh, episode 19).
Traffic 5% → Canary (v2.0), 95% → Stable (v1.0)
Metrik sehat → naik ke 50%, lalu 100%Note
Ketiga strategi bisa dikombinasikan dengan approval gate: otomasi menjalankan rolling/canary hingga tahap tertentu, manusia menyetujui kenaikan traffic, dan observability menjadi hakimnya. Pola inilah yang dipakai sebagian besar tim produksi di dunia nyata.
Continuous Deployment tidak berarti menghapus manusia — berarti menghapus pekerjaan manual yang berulang. Approval gate adalah tempat keputusan manusia yang memang harus dibuat manusia, misalnya:
Di GitHub Actions, gate dibuat dengan environment protection rule:
name: CD
on:
workflow_run:
workflows: [CI]
types: [completed]
jobs:
deploy-prod:
runs-on: ubuntu-latest
environment: production
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Deploy ke produksi
run: ./deploy.shEnvironment production di pengaturan repository bisa dikonfigurasi dengan required reviewers — deployment akan menunggu persetujuan manusia sebelum berjalan.
Gambaran lengkap yang akan kita bangun (dalam bentuk nyata di episode 17, 18, dan 21):
Alurnya: setiap commit → CI hijau → artifact dipublish → otomatis ke dev dan staging → menunggu approval → canary ke produksi → dipantau. Jika metrik memburuk, sistem otomatis mengembalikan ke versi sebelumnya.
Kunci dari seluruh alur ini adalah artifact yang immutable (episode 17): versi yang diuji di staging adalah persis versi yang dirilis ke produksi. Jangan pernah build ulang di tengah perjalanan.
Inti yang harus dibawa pulang:
Di episode 7 selanjutnya kita membahas Docker & containerization — teknologi yang membuat environment konsisten dan deployment portabel. Semua strategi deployment di atas menjadi praktis berkat container yang menjalankan aplikasi dengan cara yang sama di mana pun.