Ketersediaan (sistem aktif dan dapat diakses) dan keandalan (sistem berfungsi dengan benar) adalah persyaratan non-fungsional utama. Mencapainya melibatkan redundansi, toleransi kesalahan, menghilangkan titik kegagalan tunggal, dan menangani kegagalan dengan baik.
Ketersediaan vs keandalan
AVAILABILITY → the system is UP and responsive (accessible when needed):
→ measured as uptime % ("nines": 99.9% = ~8.7h/year down; 99.99% = ~52min/year)
RELIABILITY → the system works CORRECTLY (does what it should, without failures/errors):
→ related but distinct (a system can be up but returning wrong results — available but
unreliable)
→ both matter: users need the system available AND working correctly.
Mencapai ketersediaan tinggi
✓ REDUNDANCY → multiple instances/copies → no single point of failure (if one fails,
others serve) — the core principle
✓ Spread across AVAILABILITY ZONES / regions → survive data center/region failures
✓ FAILOVER → automatically switch to backups when something fails
✓ LOAD BALANCING + health checks → route around failed instances
✓ Database replication; eliminate SINGLE POINTS OF FAILURE everywhere
Membangun sistem yang andal
✓ Design for FAILURE → assume things WILL fail; handle it gracefully (failures are normal
at scale)
✓ FAULT TOLERANCE → continue working despite component failures (retries, fallbacks,
circuit breakers, graceful degradation)
✓ MONITORING → detect issues; backups/recovery for data; test failure scenarios
✓ Avoid CASCADING failures (one failure triggering others) → isolation, timeouts
Mengapa ini penting
Memahami ketersediaan dan keandalan adalah dasar karena keduanya adalah persyaratan non-fungsional utama untuk sistem produksi, jadi merancang dengan mempertimbangkan hal ini sangat penting dalam pengetahuan desain sistem. Ketersediaan (sistem aktif dan dapat diakses, diukur dalam "nines" uptime) dan keandalan (sistem berfungsi dengan benar) sangat penting karena pengguna membutuhkan sistem yang dapat diakses dan berfungsi dengan baik — dan memahami perbedaannya (sistem dapat tersedia tetapi tidak andal jika aktif namun mengembalikan hasil yang salah) memperjelas kekhawatiran yang terkait namun berbeda ini.
Memahami bagaimana mencapai ketersediaan tinggi adalah inti dari topik ini: redundansi (beberapa instance sehingga tidak ada titik kegagalan tunggal — prinsip inti), penyebaran di zona/wilayah ketersediaan (bertahan terhadap kegagalan pusat data), failover (beralih secara otomatis ke cadangan), load balancing dengan health checks, dan menghilangkan titik kegagalan tunggal di mana saja — ini adalah teknik fundamental untuk menjaga sistem tetap berjalan meskipun ada kegagalan.
Memahami bagaimana membangun sistem yang andal — merancang untuk kegagalan (mengasumsikan bahwa hal-hal akan gagal dan menanganinya dengan baik, karena kegagalan normal dalam skala besar — mentalitas utama), toleransi kesalahan (melanjutkan meskipun ada kegagalan komponen melalui retries, fallbacks, circuit breakers, dan graceful degradation), monitoring, backups, dan menghindari cascading failures — mencerminkan ketahanan yang diperlukan untuk produksi.
Wawasan kunci adalah bahwa dalam skala besar, kegagalan adalah tak terhindarkan, jadi sistem harus dirancang untuk mentoleransinya (melalui redundansi dan toleransi kesalahan) daripada menganggap segalanya berfungsi.
Karena ketersediaan dan keandalan penting untuk sistem produksi (pengguna membutuhkannya aktif dan berfungsi dengan benar) dan mencapainya memerlukan redundansi, toleransi kesalahan, dan merancang untuk kegagalan, dan karena memahami konsep dan teknik ini adalah fundamental untuk desain sistem, memahami ketersediaan dan keandalan adalah pengetahuan desain sistem yang penting dan mendasar — persyaratan non-fungsional utama yang harus dipenuhi sistem produksi, pusat desain sistem yang tahan lama melalui redundansi dan toleransi kesalahan, dan mencerminkan mentalitas design-for-failure yang penting untuk membangun sistem yang tetap berjalan dan berfungsi dengan benar dalam skala besar.
