Membangun kemampuan bertahan dari bencana skala besar: arsitektur multi-region active-active dan active-passive, konsep RTO dan RPO, strategi failover yang terukur, serta DR drill — lengkap dengan simulasi failover region yang bisa dipraktikkan

Di episode 15 kalian membuat satu service menjadi cepat. Namun ada satu kelas kegagalan yang tidak terselesaikan oleh optimasi apa pun: bencana yang mematikan seluruh environment — satu region cloud mati, pelepasan sertifikat yang salah, atau kegagalan provider penyedia. Saat itu terjadi, pertanyaan paling menyakitkan bukan "berapa cepat sistem pulih", melainkan "apakah kita pulih sama sekali?".
Disaster Recovery (DR) adalah sistem, bukan dokumen. Episode 16 membahas arsitektur multi-region, dua metrik yang menggerakkan semua keputusan (RTO & RPO), strategi failover, dan cara berlatih semuanya dengan DR drill — karena recovery yang tidak pernah dilatih adalah harapan yang berpura-pura menjadi rencana.
Setiap keputusan DR dimulai dari dua angka:
| Metrik | Arti | Analogi |
|---|---|---|
| RTO (Recovery Time Objective) | Waktu maksimum yang diperbolehkan sampai service pulih | Berapa lama toko boleh tutup |
| RPO (Recovery Point Objective) | Data maksimum yang boleh hilang | Seberapa basi data cadangan yang boleh diakui |
Hubungannya sederhana dan mahal: semakin ketat RTO dan RPO, semakin rumit dan mahal arsitekturnya. RTO 4 jam memungkinkan restore dari backup; RTO 1 menit menuntut replikasi sinkron aktif di region kedua. Inilah contoh klasik trade-off yang sudah kalian kenal dari episode 4 — hanya saja kali ini lawan dari kecepatan bukanlah fitur, melainkan biaya.
Important
RTO dan RPO adalah keputusan bisnis, bukan keputusan teknis — ditetapkan bersama manajemen dan dicatat sebagai angka yang disetujui, bukan asumsi tim ops. DR yang dibangun tanpa dua angka ini tidak punya garis selesai: apa pun yang kalian bangun, tidak ada yang bisa mengatakannya cukup atau berlebihan.
Dua pola utama, dengan satu pertanyaan penentu: apakah lalu lintas boleh dialihkan ke region kedua dalam kondisi normal?
Kedua region melayani trafik secara bersamaan, biasanya lewat routing berbasis lokasi pengguna (geo-DNS atau anycast). Cocok untuk service stateless dan data yang bisa dipartisi.
Region kedua hidup, data terus direplikasi, tetapi trafik normal tetap di region utama. Saat region utama gagal, trafik dialihkan. Lebih murah, tetapi failover membawa cutover risk — region pasif jarang diuji dengan trafik nyata.
Perhatikan dua keputusan tersembunyi dalam diagram ini: DNS TTL menentukan seberapa cepat trafik bisa berpindah (jika TTL 5 menit, failover tercepat tetap menunggu 5 menit untuk sebagian pengguna), dan mode replikasi menentukan RPO (sinkron = RPO mendekati nol tapi latency tulis naik; asinkron = tulis cepat tapi RPO bisa menit).
Aturan praktis SRE: mulai dari runbook, otomasi yang teruji, dan baru pertimbangkan otomasi penuh setelah failover berhasil berkali-kali tanpa manusia.
Rencana yang tidak pernah dijalankan adalah fiksi. DR drill mengubah rencana menjadi otot:
Hasil drill yang baik adalah daftar perbaikan konkret, bukan laporan "berhasil semua". Drill yang selalu berhasil mulus biasanya berarti skenarionya terlalu lembut.
Untuk lab tanpa cloud penuh, simulasikan dengan dua container yang berperan sebagai dua region:
checkout + dua instance database (misal PostgreSQL) dengan replikasi streaming antara keduanya.docker stop region-a-db region-a-app
# di region B: promosikan replica jadi primary
docker exec region-b-db pg_ctl promote
# uji request kini melayani dari region B
curl -s http://localhost:8080/healthTip
Mulailah DR drill dari yang berdurasi pendek dan melibatkan sedikit orang, lalu tingkatkan kesulitannya bertahap. Satu failover yang sukses memberi kepercayaan lebih dari sepuluh slide rencana DR yang tidak pernah dieksekusi — dan setiap drill berikutnya seharusnya lebih cepat dari yang sebelumnya.
Pada episode 16 ini, kalian telah belajar membuat kegagalan bencana menjadi peristiwa yang terlatih, bukan pertaruhan.
Inti yang harus dibawa pulang:
Di episode 17 selanjutnya, kita akan memegang lembar anggaran: cost-aware reliability — FinOps, right-sizing, dan trade-off biaya vs ketersediaan tanpa mengorbankan SLO. Sampai jumpa di episode 17!