フォールトトレランス
公開日: 2025/06/03
フォールトトレランスとは?障害を許容する強靭なシステム設計の基本
はじめに
「万が一」ではなく「いつか必ず」発生するのが、システム障害。
それでもサービスを止めず、ユーザーに影響を与えないように動き続ける仕組み──それが「フォールトトレランス(Fault Tolerance)」の考え方です。
本記事では、フォールトトレランスの意味、HAとの違い、実現方法、設計上の注意点までを体系的に解説します。
基本情報・概要
フォールトトレランスとは、システムが一部の障害(Fault)を受けても、サービス全体として機能を維持する能力を指します。
- 「障害が起きても止まらない」設計思想
- 高可用性(HA)の中でも特に無停止運用に重きを置く
- 金融、航空、医療など「止めてはいけない」分野で重要
比較・分類・特徴の表形式まとめ
項目 | フォールトトレランス | 高可用性(HA) |
---|---|---|
障害発生時の挙動 | 処理が中断されず継続 | 別システムに切り替えて復旧 |
目指す稼働率 | 99.999%(5ナイン)以上 | 99.9%〜99.99% 程度 |
代表的な用途 | 航空管制、医療機器、金融取引システムなど | Webサービス、業務アプリケーションなど |
仕組み | 冗長化、リアルタイム検知、自動訂正など | 冗長化、フェイルオーバー、監視 |
深掘り解説
フォールトトレランス設計の基本要素
- 冗長構成(Redundancy):複数の同等な構成要素を持たせ、1つが故障しても他が補完
- リアルタイム検知と切り替え:障害を即座に感知し、システム内で自己修復・代替処理
- 障害訂正機構(Error Correction):ECCメモリ、RAID、再送制御など
- 分散処理:単一障害点(SPOF)を排除する分散アーキテクチャの採用
実際の例
- RAID構成のストレージ:1台のHDDが壊れてもデータを失わない(RAID 5/6)
- 冗長電源:サーバーの電源が片方壊れても動作継続
- 双系化されたネットワーク回線:経路障害時でも迂回可能
- 分散DB(例:CockroachDB):ノード障害時もデータ損失なくクエリ応答可能
応用・発展的な使い方
- KubernetesのPod自動再スケジュール + マルチAZ構成
- メッセージキュー(Kafkaなど)での分散ログ耐障害設計
- CDNとエッジサーバーの併用で、配信拠点単位の障害回避
- リトライ処理やサーキットブレーカーによるアプリケーション層の堅牢化
よくある誤解と注意点
- フォールトトレランス ≠ 障害が起きない(“起きても影響を最小化する”)
- 実現には高コスト・複雑な構成が必要
- 高可用性より設計・検証負荷が高く、すべてのサービスに必要ではない
- 本番での継続的なテスト(例:Chaos Engineering)が不可欠
まとめ
フォールトトレランスは、想定外の障害や故障に対してもシステムを止めずに運用を継続するための高度な設計技術です。
冗長性、自己回復性、分散性を備えた構成を構築することで、極限まで信頼性を高めることができます。
すべてのシステムに必要ではないものの、「止められない」サービスにおいては必須となる重要な考え方です。