Merancang infrastruktur yang tahan gagal dan bisa tumbuh: memahami redundancy di setiap lapisan, membangun auto-scaling berbasis metrik, mendesain failover yang benar, serta menghitung ketersediaan yang realistis

Setelah di episode 20 kita menyiapkan respons saat incident, kini kita berusaha membuat incident tidak terjadi: high availability & scaling. Infrastruktur yang selalu tersedia dan bisa tumbuh tidak terjadi kebetulan — ia dirancang dengan redundancy di setiap lapisan dan mekanisme scaling yang terukur.
Mengapa topik ini penting? Karena ketersediaan adalah kontrak yang bisa dihitung, bukan harapan. Sembilan sembilan (99.9%) bukan sekadar slogan pemasaran — ia angka yang menuntut desain tertentu. Episode ini membangun cara berpikir HA: redundancy, failure domain, auto-scaling, dan failover — dengan perhitungan yang realistis.
| Ketersediaan | Downtime per Tahun | Kesan |
|---|---|---|
| 99% | 3,65 hari | Standar rendah |
| 99.9% | 8,76 jam | Lumayan |
| 99.99% | 52,6 menit | Produksi serius |
| 99.999% | 5,26 menit | Telekomunikasi/bank |
Angka-angka ini menjadi SLA (Service Level Agreement) — dan SLA menuntut desain. Untuk downtime kurang dari 1 jam per tahun, kalian tidak bisa bergantung pada satu komponen apa pun.
Aturan penting: ketersediaan sistem = perkalian ketersediaan komponen yang saling bergantung.
Load balancer : 99.9% (0.999)
Web server : 99.9% (0.999)
Database : 99.5% (0.995)
Total = 0.999 × 0.999 × 0.995 = 0.993 ≈ 99.3%Tiga komponen "bagus" ternyata menghasilkan 99.3% — hampir 2 hari downtime per tahun! Ini pelajaran penting: setiap komponen dalam rangkaian menurunkan total. Untuk mencapai 99.9% end-to-end, tiap komponen harus jauh di atasnya — atau komponen yang lemah dibuat redundant.
Dua komponen paralel (salah satu hidup, sistem hidup):
P(sistem gagal) = P(A gagal) × P(B gagal)
Dengan A dan B masing-masing 99%: 0.01 × 0.01 = 0.0001 → 99.99%Mendobelkan komponen mengubah ketersediaan dari 99% menjadi 99.99% — ini alasan dasar mengapa HA = redundancy.
Perhatikan pola two of everything: DNS ganda, LB ganda, banyak web di banyak AZ, database multi-AZ. Tidak ada satu komponen pun yang menjadi penentu tunggal.
Important
Redundansi yang tidak pernah diuji adalah dekorasi. Jangan menunggu incident untuk membuktikan failover — uji kegagalan secara berkala: matikan satu AZ, matikan satu LB, matikan satu node database, dan ukur dampaknya. Chaos engineering mengubah "semoga tidak terjadi" menjadi "terbukti bisa pulih".
Auto-scaling menambah/mengurangi kapasitas berdasarkan metrik terukur, bukan prediksi.
| Aspek | Horizontal (scale out) | Vertikal (scale up) |
|---|---|---|
| Tambah | Instance/pod baru | Perbesar instance yang ada |
| Batas | Hampir tak terbatas | Batas hardware/vendor |
| Downtime | Tidak ada | Perlu restart |
| Biaya per unit | Lebih efisien | Mahal di titik ekstrem |
| Karakter | Stateless workload | Stateful/workload khusus |
Aturan: horizontal untuk stateless (web, API), vertikal untuk stateful (database) hingga batas tertentu.
Skala naik : CPU > 70% selama 5 menit → +2 instance
Skala turun : CPU < 30% selama 15 menit → -1 instance
Maksimum : 10 instance (safety cap)
Minimum : 2 instance (jangan pernah 1)Dua aturan yang sering dilanggar:
Failover adalah perpindahan otomatis ke komponen cadangan saat yang utama gagal. Tiga pola:
Satu aktif, satu standby menunggu. Sederhana, tapi standby menganggur (biaya) dan failover butuh waktu (deteksi + cutover).
Semua instance aktif melayani. Utilisasi tinggi, failover instan, tetapi butuh aplikasi yang mendukung multi-node (stateless, atau state terdistribusi).
Pola paling sensitif: database failover memindahkan sumber kebenaran.
Primary (AZ a) + Replica (AZ b) + Replication berkelanjutan
Primary gagal → promote replica → aplikasi diarahkan ke yang baru
Hal yang wajib diuji : seberapa cepat? RPO berapa? Aplikasi reconnect?Pada episode 21 ini kalian telah merancang HA & scaling:
Di episode 22 selanjutnya kita memastikan kapasitas tepat dan performa optimal: performance & capacity planning — benchmarking, tuning, dan perencanaan kapasitas. Sampai jumpa di episode 22!