Everything fails, all the time.
— Werner Vogels, CTO, Amazon.com
Di dunia cloud dan web development, ada kenyataan pahit yang harus diterima kita-kita developer: segala sesuatu pasti akan rusak atau gagal pada akhirnya. Either server down, kabel putus (somehow someway), ato kode yang diupdate trus tiba-tiba error.
Karena kita bukanlah ayanokoji yang bisa mencegah dan mengantisipasi semua kegagalan, fokus arsitektur cloud yang baik adalah memastikan sistem kita tetap bisa hidup dan melayani client talaupun ada komponen (server, kabel, code, dll) yang bermasalah. Itulah topik yang akan kita bahas di sini: Reliability (Keandalan) dan Availability (Ketersediaan).
Apa artinya Reliable?
Reliability adalah ukuruan kemampuan sistem kita untuk menjalankan fungsi/pekerjaannya dengan benar dan tepat saat client menginginkannya. Sistem ini mencakup semuanya, dari hardware, software, sampai firmware.
Reliability seringkali diukur dengan peluang/kemungkinan sistem akan berfungsi sesuai rencana dalam periode waktu tertentu. Metrik yang sering dipakai adalah:
- - MTTF (Mean Time to Failure): Rata-rata waktu sistem menyala normal sampai akhirnya rusak.
- - MTTR (Mean Time to Repair): Rata-rata waktu yang dibutuhkan untuk memperbaiki sistem tersebut sampai normal lagi.
- - MTBF (Mean Time Between Failures): Total waktu rata-rata antara satu kerusakan dengan kerusakan berikutnya.
- Rumusnya:
Apa artinya Availability & apa itu "The Number of 9s"?
Available = Bersedia/Ketersediaan. Artinya, persentase waktu di mana sistem beroperasi secara normal/uptime dibandingkan dengan total waktu yang ada. Dalam dunia IT ini, ada istilah "Number of 9s" (Jumlah angka 9). Misalnya, kalau dibilang ketersediaannya/availability-nya "Lima 9" (Five 9s), itu artinya uptime sistem mencapai 99,999% dalam setahun. Nah angka "9" ini juga ada kategori availabilitynya dan dampak downtime dalam setahun
| Availability | Maksimal Web Mati (Per tahun) | Kategori Aplikasi/Contoh |
|---|---|---|
| 99% | 3 hari 15 jam | Pemrosesan batch; ekstraksi data; transfer/load jobs |
| 99.9% | 8 jam 45 menit | Tools internal perusahaan |
| 99.95% | 4 jam 22 menit | Sistem Online commerce (E-commerce / Toko Online) |
| 99.99% | 52 menit | Sistem broadcast; pengiriman Video |
| 99.999% | 5 menit | Transaksi ATM; sistem telekomunikasi |
Note: Makin banyak angka 9-nya, makin dilarang keras web itu untuk down/mati. Toko online masih ditoleransi mati selama 4 jam (in total dalam setahun), tapi kalau ATM? Kalian mau ngga bisa jajan online selama 3 hari? apalagi down selama 4 jam, pas udah di kasir mo bayar belanjaan.
High Availability
Sebuah sistem memiliki High Availability kalau dia bisa menahan sejumlah penurunan kinerja atau kerusakan komponen, tapi aplikasinya tetap tersedia untuk diakses. Tujuannya, meminimalisir downtime sebisa mungkin tanpa butuh banyak campur tangan manusia untuk memperbaikinya. Maka dari itu, ada 3 faktor utama yang mempengaruhi Availability aplikasi kamu:
- Fault tolerance: Seberapa kuat komponen aplikasi yang memiliki cadangan built-in redundancy mampu tetap beroperasi meski ada kerusakan. (Contoh: Web kamu punya 3 server. Saat 1 server terbakar, 2 server sisa otomatis langsung ambil alih kerjaannya tanpa disadari client).
- Scalability: Kemampuan aplikasi untuk menampung lonjakan traffic tanpa harus mengubah desain arsitekturnya. (Contoh: Web yang biasanya dikunjungi 100 orang tiba-tiba didatangi 10.000 orang. Sistem otomatis menambahkan mesin/kapasitas agar web tidak melambat).
- Recoverability: Proses, aturan, dan prosedur untuk memulihkan layanan setelah terjadi bencana yang sangat fatal (catastrophic event). (Contoh: Data base terhapus, seberapa cepat kita bisa mengembalikan data dari file backup).