フォールトトレランス
フォールトトレランス(Fault Tolerance)とは、システムを構成する一部の要素に故障や障害が発生した場合でも、システム全体としての機能を継続させる設計思想および技術的手法の総称である。「故障許容設計」とも訳される。その根本的な前提は、どれほど高品質な部品や入念な設計を施しても、長期稼働にわたって故障をゼロにすることは不可能であるという現実認識にある。航空・宇宙、医療機器、原子力、金融インフラ、通信ネットワークなど、停止が許されない分野を中心に発展してきた概念であり、現代の高信頼性システム設計において欠かせない基盤となっている。
概念の成立と歴史的背景
フォールトトレランスの概念は、1960年代のコンピュータ黎明期に体系化が進んだ。NASAのアポロ計画や軍事システムにおいて、単一の故障がミッション全体を失敗に終わらせる事態を防ぐ必要性が明確になったことが契機である。1967年にAlgirdas Avizienis(アルギルダス・アビジエニス)らが発表した論文において「フォールトトレラントコンピュータ」という表現が用いられ、学術的な概念として定着した。その後、半導体産業の発展とともに民間分野にも波及し、1980年代にはTandem Computersが商用ノンストップサーバーを実用化するなど、産業応用が本格化した。
【いきなりメモ☕️】
💡フォールトトレランス
障害発生時、機能を縮小せずに継続させる設計手法。✍️「アベイラビリティ」と混同されやすいが、アベイラビリティは障害を防止することに主眼を置いており、フォールトトレランスは障害発生後にどれだけ通常の機能を保ち続けられるかを目的にしている。
— ♩ (@maakkiikkoo) January 30, 2021
フォールトアボイダンスとの対比
フォールトトレランスの真逆の概念として、フォールトアボイダンス(Fault Avoidance)がある。フォールトアボイダンスは、高品質な部品の選定、厳密な製造プロセスの管理、設計段階での徹底的な検証を通じて、そもそも故障の発生自体を予防しようとするアプローチである。一方、フォールトトレランスは故障の発生を所与の条件として受け入れ、それが起きた後もシステムを稼働させ続けることを目標とする。両者は信頼性向上という共通の目的を持ちながら、設計思想の出発点が根本的に異なる。実際の高信頼性システムは、この二つを相補的に組み合わせて設計されることが多い。
アウトプット 応用情報
フォールトアボイダンス
→システムの設計段階で障害の発生を未然に防ぐアプローチ。厳密な設計、テスト、品質管理、信頼性の高い部品の使用などにより、故障の可能性を最小限に抑える#プログラミング学習 #駆け出しエンジニアと繋がりたい #今日の積み上げ— k_tanaka(プログラミング修得中) (@k_tanaka_prg) November 21, 2024
実現のための主要メカニズム
フォールトトレランスを実現する技術的手段は複数存在し、それぞれ対象とする障害の性質や要求される信頼度水準に応じて使い分けられる。代表的なメカニズムとして、以下のものが挙げられる。
- 冗長化(Redundancy):同一機能を持つコンポーネントを複数用意し、一つが故障しても他が機能を引き継ぐ構成。ハードウェア冗長化とソフトウェア冗長化に大別される。
- 誤り検出・訂正(Error Detection and Correction):データに誤りが生じた際に検出し、可能であれば自動的に訂正するECCメモリなどの仕組み。
- フェールオーバー(Failover):主系に障害が発生した際、自動的にバックアップ系へ切り替える機能。切替えの速度はシステムの可用性に直結する。
- 再構成(Reconfiguration):障害が発生したコンポーネントを系から切り離し、残存するコンポーネントで動作を継続する仕組み。
- チェックポイントとロールバック:処理の途中状態を定期的に保存し、障害発生時に直前の正常状態から復旧する手法。
おはようございます!
毎日更新note&ポッドキャスト「こっそりAI教室」公開/配信しました。
連続54日目です。今回のテーマは【フォールトトレランス】
システムの一部が故障しても、サービス全体が止まらない仕組み…
ミサキさんはこれを「電車の振替輸送」に例えました。… pic.twitter.com/2Bc99tjivn— ゆう|こっそりAI教室【毎日配信】 (@yu_biz_manga) March 26, 2026
冗長化の構成方式
冗長設計における構成方式は、待機方式によってさらに細分される。常用系と予備系が常に同じ処理を並行して行い、出力結果を比較する「ホットスタンバイ」は切替え時間がゼロに近く、最も高い可用性を実現するが、コストも高い。予備系を常に起動した状態で待機させる「ウォームスタンバイ」は中間的な性質を持つ。予備系の電源を落とした状態で待機させる「コールドスタンバイ」は低コストだが、切替えに時間を要する。また、複数系統の多数決論理により誤動作を検出・マスクする「TMR(Triple Modular Redundancy)」方式は、航空機の飛行制御システムなどに採用されている。
産業分野への適用
フォールトトレランスの考え方は、ミッションクリティカルな多くの産業分野に広く実装されている。航空機では、油圧系統・電源系統・フライトコントロールコンピュータが三重から四重に冗長化されており、複数系統が同時に失陥する確率は極めて低い水準に抑えられている。医療機器では、人工心肺装置や放射線治療装置において、機能安全規格(IEC 61508)に基づいた冗長構成が義務付けられている場合がある。金融システムでは、取引処理の停止が直接的な損失につながるため、地理的に分散したデータセンター間でのリアルタイムレプリケーションが標準的に構築されている。
ソフトウェアにおけるフォールトトレランス
ハードウェアの冗長化にとどまらず、ソフトウェアの観点からもフォールトトレランスを実装することが重要視されている。異なる開発チームが同じ仕様から独立して実装した複数のソフトウェアを並行動作させる「Nバージョンプログラミング」は、設計上の欠陥(バグ)が同時発現する確率を下げる手法である。また、クラウドネイティブアーキテクチャにおけるマイクロサービス設計では、あるサービスの障害が他のサービスに連鎖しないよう「サーキットブレーカーパターン」を導入する手法が広く普及している。さらに、カオスエンジニアリングと呼ばれる手法では、本番環境に意図的に障害を注入することで、システムのフォールトトレランス能力を検証する。
ハードウェアにおけるフォールトトレランス
ハードウェアにおけるフォールトトレランスとは、物理的なコンポーネントに障害が発生しても、システム全体の動作を継続させるための設計思想および技術体系である。単一障害点(SPOF: Single Point of Failure)を排除し、冗長化・誤り訂正・自動切替などの手段を組み合わせることで、高可用性(High Availability)を実現する。航空宇宙、医療機器、金融インフラ、産業制御系など、停止が許容されない領域で広く採用されている。
フォールト〇〇てなんなん?#技術士 #キーワード #フォールトアボイダンス #フォールトトレランス https://t.co/7F6foGVXZC pic.twitter.com/HIUrbWCdsj
— PRO(4コマ技術士) (@prohei321) June 3, 2026
フェールソフトとの関係
関連する概念として「フェールソフト(Fail Soft)」がある。これはシステムが障害に際して完全な機能継続はできないものの、性能や機能を縮退させながらも部分的に稼働を続ける設計思想であり、フォールトトレランスの一形態とみなされることがある。完全な機能継続を追求する狭義のフォールトトレランスと、縮退運転を許容するフェールソフトとは、要求される可用性レベルや許容コストに応じて使い分けられる。これらは、フールプルーフやフェールセーフとともに信頼性設計の基本概念群を構成している。
フォールトトレランスの枠組みに、フェールソフト(システム全体は停止させない)、フェールセーフ(安全動作)、フールプルーフ(不特定多数の人の操作でもバグらない)などがあるみたい。
僕は業務で全部いっしょくたにして考えてたけど、概念として分けて考えたほうが設計がよりスムーズにいきそう— インバータおじさん (@inv_ojis16236) September 15, 2023
信頼性評価指標
フォールトトレランスを備えたシステムの評価には、定量的な信頼性指標が用いられる。MTBF(平均故障間隔)はシステムが正常稼働する平均時間を表し、値が大きいほど故障頻度が低いことを示す。MTTR(平均修復時間)は故障発生から復旧までに要する平均時間であり、フェールオーバーにより自動復旧する場合は極めて短くなる。これら二つの指標から導かれる「可用性(Availability)」は、MTBF ÷ (MTBF + MTTR) で算出され、システムが稼働状態にある時間の割合を示す。「ファイブナイン(99.999%)」と呼ばれる可用性水準は、年間停止時間が約5.26分以下に相当し、通信インフラや金融システムで要求される高い目標値の代表例である。
【MTBF】
Mean Time Between Failureの略で、機械の"信頼性"を表す指標。日本語では「平均故障間隔」という。ざっくり言えば連続稼働できる時間の平均値。MTBFの数値が大きいほど信頼性の高い機械だと言える。設備を設計する上で必ず必要となる指標だ!
ちなみにMTBFの逆数を取ると"故障率"となる。 pic.twitter.com/9OZoChBW3U
— しぶちょー (@sibucho_labo) December 9, 2023
設計プロセスへの組み込み
フォールトトレランスの実装は、製品開発の早期段階から設計プロセスに組み込むことが有効である。FMEA(故障モード影響解析)やFTA(故障の木解析)を用いて、システム内の単一障害点(Single Point of Failure)を特定し、その影響度と発生確率を定量的に評価する。特定された単一障害点に対して冗長化や誤り訂正の手段を適用し、残留リスクが許容水準を下回ることを確認する。設計手順の観点では、要件定義の段階で可用性目標を数値で定め、それをアーキテクチャ選定の基準として用いることが重要である。また、ハードウェア選定においても、部品単体のMTBFデータをもとに系全体の信頼性をボトムアップで予測する手法が取られる。
リスクマネジメントの手法、FMEA(故障モード影響解析)はご存知でしょうか?
プロジェクトで起こりうる問題を事前に特定し、その影響や発生確率を評価します。これにより、どのリスクに優先的に対処すべきかを明確にし、効果的な対策を計画できます。
是非調べてみてください。— 伊藤広|AI・DXを推進する社長 (@hiroshi_ito1021) November 30, 2024
コストとのトレードオフ
フォールトトレランスの実現には、追加コンポーネントの調達・実装コスト、消費電力の増加、システムの複雑化に伴う管理コストなど、無視できないコストが伴う。冗長化の程度を高めるほど可用性は向上するが、コストは指数的に増大する傾向がある。したがって、どのコンポーネントにどの程度の冗長性を付与するかは、システム停止がもたらす損失(ダウンタイムコスト)と冗長化コストを比較衡量して決定する。リスクアセスメントと費用便益分析を組み合わせたこの意思決定は、信頼性工学における中核的な課題の一つである。
実装例
- ECCメモリとスクラビング:単一ビット誤り訂正、定期巡回で潜在エラーを事前除去する。
- RAIDと多重電源:ストレージの冗長化と電源系の二重化で単一故障点(SPOF)を排除する。
- マイクロサービス:サーキットブレーカ、バルクヘッド、リトライ&バックオフ、アイドル冗長で局所故障を封じ込める。
- 航空・宇宙:三重系フライトコントロール、独立電源、物理分離配線でCCF耐性を高める。
- 自動車:ISO 26262に基づく二重化センサと監視CPUでASIL要求を満たす。
フォールトトレランスとフェールソフトはいつも混乱させてくれる。
結果は同じじゃねーかと思うんだが。
— レオ (@haisaileo) January 6, 2024
設計上の注意点
- 共通原因故障(CCF)低減:物理隔離、メーカー多様化、環境独立化、異種アルゴリズム採用が有効である。
- 過剰複雑化の抑制:冗長は故障機会と運用負荷を増やす。構成最小化と可観測性・可制御性の確保が肝要である。
- 診断と保全:自己診断(BIST/LBIST/MBIST)、予兆監視、整備性設計(モジュール交換、ホットスワップ)でMTTRを短縮する。
- 規格・認証:IEC 61508、ISO 26262、EN 50126/8/9、DO-178C/DO-254など領域規格に適合させ、証拠(evidence)を体系化する。
フェイルセーフやフォールトトレランスを持たせようとすると結構面倒で
— 霖 (@Ringo_2048) September 28, 2020
用語ミニ解説
- fault/error/failure:原因→状態の矛盾→機能喪失の関係を指す。
- TMR/2oo3:三重化し多数決で正当判定を行う方式。投票器の信頼度が要点。
- MTBF/MTTR:稼働継続性の核心指標。保全設計で後者を短縮する。
- FIT:109時間当たりの故障数。半導体部品の故障率指標。
- グレースフル・デグレード:品質を下げつつサービスを継続する振る舞い。
フォールトトレランスの枠組みに、フェールソフト(システム全体は停止させない)、フェールセーフ(安全動作)、フールプルーフ(不特定多数の人の操作でもバグらない)などがあるみたい。
僕は業務で全部いっしょくたにして考えてたけど、概念として分けて考えたほうが設計がよりスムーズにいきそう— インバータおじさん (@inv_ojis16236) September 15, 2023
設計プロセスへの組み込み
要求定義段階で可用性目標(例:A≥99.99%)と安全目標を明確化し、ハザード分析から冗長・多様化・隔離のトレードオフを実施する。以後、アーキテクチャ設計でSPOF排除、監視・復旧シーケンス、運用時の監視基盤(ログ、メトリクス、トレース)を統合する。検証ではモデル解析、HIL/SIL、フォールトインジェクション、混乱試験(chaos engineering)で実効性を確認し、運用では更新や部品交換のライフサイクル戦略で耐用年数全体の可用性を維持する。
松本零士が「昔の機械はネジが2,3個とれても動き続けるものが多かった」と999で書いてたけど、そういう「余裕」が機械にも社会にも必要なんじゃないですかね。それが耐障害性(フォールトトレランス)じゃないのかしら。
— べちか (@10chf) May 18, 2017
コメント(β版)