Strategi High Availibility
Pendahuluan
Mengenai pengenalan awal tentang High Availibility bisa dilihat di sini
Tentang Fault Tolerance bisa dilihat di sini
Inti dari High Availibility adalah Availibility nya, yaitu ketersediaan service yang dibutuhkan, sehingga pengguna bisa menggunakan sistem kita dengan lengkap dan sempurna.
High Availibility bukan berarti sistem/aplikasi kita tidak pernah mati/downtime sama sekali.
Akan tetapi High Availibility mengisyaratkan bahwa sistem kita harus tersedia sepanjang waktu., dengan meminimalkan downtime nya.
Bagaimana caranya ?
Sebenarnya banyak cara untuk mencapai High Availibility ini, misalnya :
1. Melakukan Redundancy
Redundancy ini artinya melakukan penggandaan terhadap komponen yang ada, agar bisa menangani jumlah permintaan yang banyak/meningkat.
Misalnya ketika terjadi Ticket War atau Flash Sale, maka dilakukan penggandaan server atau service sesuai dengan peningkatan request/permintaan dari pengguna.
Atau misalnya dengan mengakomodasi konsep CDN (Content Delivery Network), yaitu membuat penggandaan content dengan tujuan agar pengguna mendapatkan data yang lebih “Available” sesuai dengan lokasi pengguna.
2. Melakukan Load Balancing
Load Balancing lebih kepada mendistribusikan permintaan dari banyak pengguna.
Misalnya request web waktu Ticket War atau Flash Sale.
Namanya juga LOAD BALANCING !.
Dari namanya saja sudah kelihatan.
Kombinasi dari Load Balancing dan Redundancy diatas adalah kombinasi yang bagus ketika menangani permintaan yang banyak.
Load Balancing membutuhkan komponen terpisah Load Balancer yang bisa saja terpisah dengan server-server yang berada di belakangya.
Server-server yang berada di belakang Load Balancer juga bisa mempunyai spesifikasi server yang berbeda dan beragam.
Yang penting si Load Balancer bisa Mendistribusikan request yang datang kepadanya kepada server-server yang berada di belakangnya tersebut.
3. Melakukan Clustering
Clustering merupakan versi lebih canggih lagi dari Load Balancing dan Redundancy.
Clustering merupakan kumpulan server-server yang dianggap sebagai sebuah kesatuan bersama.
Tidak seperti Load Balancer yang bisa saja mempunyai komponen terpisah dengan server-server dibelakangnya.
Clustering merupakan sebuah kesatuan server, dan mungkin saja menerapkan node manager atau primary server dalam mengontrol server lainnya.
Dan Clustering bisa saja berbagi status satu sama lain, untuk tetap bisa menjaga keutuhan dari clusternya.
Misalnya karena ada salah satu server yang mati, bertambah, dll.
Ini yang mungkin bisa kita lihat di clustering Elastic Search, Kafka, dan teknology yang menggunakan sistem terdistribusi.
4. Melakukan Fail Over
Fail Over mengacu kepada sistem backup yang standby, dan bisa menggantikan sistem yang sedang berjalan ketika terjadi kegagalan di dalam sistem.
Fail Over mengacu kepada sistem Secondary yang otomatis akan tersedia seketika sistem Primary nya bermasalah atau down.
Bisa saja merupakan :
- Cold Fail Over, ketika server secondary baru bisa jalan ketika server primary nya shutdown.
- Hot Fail Over, ketika kedua server jalan secara berbarengan, tetapi hanya dipointing ke salah satu server saja. Kalau terjadi gagal di satu server, maka otomatis akan dipindahkan pointingnya ke server satunya lagi.
Fail Over ini biasanya dimanage oleh sistem yang berbasis DNS .
5. Melakukan Monitoring Sistem
Monitoring sistem untuk High Availability artinya adalah menyediakan alat untuk bisa mendeteksi ketika terjadi kegagalan di dalam sistem atau terjadi lonjakan diluar dari kebiasaan.
Hal ini agar mudah dideteksi sedini mungkin dan bisa dilakukan aksi yang tepat.
Misalnya penggunaan CPU, Memori yang lebih tinggi dari biasanya, misalnya 60% menjadi alert agar perlu dilakukan Auto Scaling server yang baru.
Dan monitoring sistem ini juga seharusnya harus secara otomatis men-trigger aksi yang diperlukan untuk menjamin High Availability ini.