Apa itu fault tolerance?
Fault tolerance adalah kemampuan sebuah sistem untuk tetap memberikan layanan tanpa gangguan meskipun satu atau lebih komponennya mengalami kegagalan.
Fault tolerance juga berfungsi untuk mengatasi potensi gangguan layanan yang disebabkan oleh error pada software atau logika program. Tujuannya adalah mencegah kegagalan fatal yang bisa terjadi akibat adanya single point of failure.
Sistem yang fault-tolerant dirancang agar bisa mengompensasi banyak kegagalan sekaligus. Sistem ini secara otomatis mendeteksi kerusakan pada CPU, subsistem input/output (I/O), memory card, motherboard, power supply, atau komponen jaringan. Titik kegagalan akan diidentifikasi, lalu komponen cadangan atau prosedur backup segera mengambil alih tanpa menghentikan layanan.
Untuk memastikan fault tolerance, perusahaan perlu memiliki stok perangkat komputer cadangan yang sudah diformat, serta perangkat UPS (Uninterruptible Power Supply) tambahan. Tujuannya adalah mencegah crash pada sistem dan jaringan utama, dengan fokus pada isu uptime dan downtime.
Fault tolerance dapat disediakan melalui software, ditanamkan langsung pada hardware, atau kombinasi keduanya.
Pada implementasi software, sistem operasi (OS) menyediakan interface yang memungkinkan programmer melakukan checkpoint pada data penting di titik tertentu dalam sebuah transaksi. Pada implementasi hardware, programmer tidak perlu mengetahui secara detail kemampuan fault tolerance mesin tersebut.
Di level hardware, fault tolerance dicapai dengan melakukan duplikasi pada setiap komponen. Disk dibuat mirror. Beberapa prosesor digabung, lalu output-nya dibandingkan untuk memastikan hasilnya benar. Jika ada anomali, komponen yang rusak akan diputus dari sistem, tetapi mesin tetap berfungsi normal.
Fault tolerance vs. high availability
Fault tolerance sangat erat kaitannya dengan business continuity melalui sistem dan jaringan high availability. Lingkungan fault-tolerant mampu memulihkan layanan secara instan setelah terjadi gangguan. Sementara itu, lingkungan high availability berusaha mencapai 99,999% waktu operasional (five nines).
Dalam sebuah cluster high availability, sekumpulan server independen digabung secara longgar untuk menjamin sharing resource dan data penting secara sistem-wide. Cluster ini memonitor kondisi satu sama lain dan menyediakan mekanisme recovery agar aplikasi tetap tersedia. Sebaliknya, cluster fault-tolerant terdiri dari beberapa sistem fisik yang berbagi satu salinan OS. Perintah software yang dijalankan pada satu sistem juga dieksekusi pada sistem lainnya.
Trade-off antara fault tolerance dan high availability terletak pada biaya. Sistem dengan fault tolerance terintegrasi biasanya lebih mahal karena membutuhkan tambahan hardware.
Fault tolerance vs. graceful degradation
Fault tolerance sering disamakan dengan graceful degradation, meskipun sebenarnya istilah kedua lebih dekat dengan disiplin fault management, yang bertujuan mendeteksi, mengisolasi, dan menyelesaikan masalah secara preventif.
Sistem fault-tolerant mengganti komponen yang rusak dengan backup untuk menjaga availability dan performa. Sementara itu, graceful degradation memungkinkan sistem tetap berjalan, tetapi dengan performa yang menurun.
Menyesuaikan data protection dengan fault tolerance
Fault tolerance sangat bergantung pada redundansi. Data biasanya dilindungi melalui replikasi atau mirroring sinkron ke data center lain. Untuk redundansi fisik, hardware cadangan disiapkan agar bisa melakukan failover saat sistem utama gagal.
Backup data biasanya digabungkan dengan redundansi. Keduanya bertujuan mencegah kehilangan data, meskipun backup lebih fokus pada pemulihan di titik waktu tertentu, termasuk recovery granular untuk sebuah data object. Sementara itu, sistem redundant didesain untuk workload yang tidak bisa menerima downtime terlalu lama.
Saat mengimplementasikan fault tolerance, perusahaan perlu menyesuaikan kebutuhan data availability dengan level perlindungan data menggunakan RAID. Teknik RAID memastikan data ditulis ke beberapa hard disk, baik untuk menyeimbangkan operasi I/O maupun meningkatkan performa sistem secara keseluruhan.
Organisasi yang lebih mementingkan fault tolerance dibanding kecepatan bisa menggunakan RAID 1 (disk mirroring) atau RAID 10 yang menggabungkan mirroring dan disk striping. Jika fault tolerance dan performa sama-sama penting, perusahaan bisa mengombinasikan RAID 10 dengan RAID 6 (double-parity RAID) yang mampu menahan dua kegagalan disk sebelum data hilang. Kekurangannya, selain biaya lebih mahal, proses write data pada RAID set ini cenderung lebih lambat.
Selain hardware, arsitektur fault-tolerant juga harus dikombinasikan dengan backup terjadwal untuk data penting, misalnya membuat mirror ke lokasi sekunder. Aspek keamanan juga wajib diperhatikan, termasuk pencegahan akses tidak sah, penggunaan antivirus, serta update OS terbaru.

Industri mana saja yang bergantung pada fault tolerance?
Fault tolerance tidak hanya soal memiliki perangkat cadangan, tetapi juga pendekatan metodologi sejak awal dalam merancang sistem komputer agar reliable. Fault tolerance menjadi spesifikasi wajib untuk sistem komputer yang digunakan pada online transaction processing (OLTP), seperti sistem kontrol penerbangan dan reservasi maskapai. Sistem fault-tolerant juga banyak digunakan di sektor distribusi dan logistik, pembangkit listrik, manufaktur berat, sistem kontrol industri, serta ritel.