San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
Vulnerabilities

フォールトトレランスとは? 3つの手法と定義

現代はデジタル空間となり、耐障害性などの技術がその重要性から注目されています。システムに耐障害性を組み込むことで、障害が発生しても問題なく動作し続けることが可能となります。耐障害性とは、システムの部品に故障が起きたときに適切に対応する仕組みを指します。

Author
フォールトトレランスとは? 3つの手法と定義

フォールトトレランスとは

フォールトトレランス(または障害への適応)とは、システムの一部が故障やクラッシュしても、全体が継続して動作できるように、あらかじめ組み込まれた能力を指します。システムを障害に強く設計する狙いは、特定の故障による停止を防ぎ、常にサービスを提供し続けることにあります。

障害に強いシステムは、故障した部品の代わりとなるバックアップを備え、通信の途切れを防ぎます。以下は、その代表的な例です。

  • ハードウェアシステム: 同一のシステムでサポートされる種類です。例えば、メインサーバーがクラッシュした場合、同じ動作をする別のサーバーを用意すれば、システム全体の安定性が保たれます。バックアップサーバーがメインの動作を監視し、代行します。
  • ソフトウェアシステム: ソフトウェアツールやライブラリで支えられるシステムです。例えば、顧客データで満たされたデータベースは、別のマシンで複製・定期更新され、メインのデータベースに障害が発生した際は自動的にバックアップに切り替わります。
  • 電源: システムが予備の電源を利用して、障害に対処できるよう設計されています。特定の電源に障害があれば、別の電源に切り替えます。例えば、複数の発電設備を持つ企業では、メイン電源が落ちた場合、備えの発電機を起動します。

耐障害性システムの構成要素

障害に強いシステムを設計する最大のメリットは、全体の停止やシステム障害のリスクを低減または回避できる点にあります。また、部品の故障によるシステム停止のリスクも防げます。耐障害性は、航空管制など命に関わるシステムでは特に重要です。

耐障害性システムの主な構成要素は以下の通りです。

  1. 多様性

これは、メインシステムとは別にバックアップシステムを用意することを意味します。例えば、メイン電源が嵐や発電所のトラブルで停止した場合、代替電源が必要となります。こうした場合、バックアップ発電機などの選択肢が役立ちます。

また、耐障害性における多様性は、バックアップが必ずしもメインと同等の性能を持たない可能性もあることを意味します。場合によっては、メイン電源が復旧するまで、システムの一部機能を削減する必要があるかもしれません。

  1. 冗長性

障害に強いシステムでは、余分なリソースを活用して弱点を補完する場合があります。例えば、必ずしも全てが同時に稼働しなくてもよい複数の電源装置(PSU)を搭載するシステムでは、メインのPSUに障害が出た場合、他のユニットがすぐに代替し、システムは継続して動作できます。

また、システムレベルでの冗長化、すなわち全く別のサーバーシステムを用意する方法も可能です。

  1. レプリケーション

レプリケーションは、障害対応のためのより複雑な手法です。単一システムの異なるバリエーションやサブシステムを作り、それらが常に同一の結果を出すよう設計します。もし結果に差異が生じた場合は、選択アルゴリズムを用いて障害のあるシステムを識別、選択します。

レプリケーションは、各コンポーネントごとに複数のプロセッサが連携して同じ結果を生む形や、システム全体で複数のサーバーを同時に運用する形で実装できます。

フォールトトレランスはどのように機能する?

耐障害性は、どのシステムにも組み込むことができる考え方です。もし一部が停止しても、システム全体が止まらないように設計する必要があります。

耐障害性は、負荷分散やフェイルオーバーの考え方に基づいており、突発的な障害のリスクを除去します。通常、これらの機能は稼働中のシステムに組み込まれ、管理者が変化を検知できるようになっています。

Fault Tolerance work

耐障害性は、以下の2つの基本的な動作モデルに基づく仕組みです。

  • 通常運転: 障害耐性システムが、何らかの障害を検出してもバックアップが作動し、問題なく通常運転を継続する状態を指します。システムのパフォーマンスや重要なプロセスの応答時間に変化が起きません。
  • 段階的劣化: システムが部品の故障により、徐々に性能が低下する状態を指します。つまり、小さな障害がシステム全体の停止や致命的なパフォーマンス低下を引き起こすことなく、影響が限定的となります。

ソフトウェアの障害耐性技術 

これらの手法は、障害が起きてもソフトがクラッシュしないように設計されています。各手法には特徴があり、長所と短所が存在します。

  • Nバージョンプログラミング

一般的な手法として、N人の開発者が、複数(N個)のソフトウェアバリエーションを作成し、同時に運用することにより、障害耐性を高めます。

この方法は、初期開発段階で障害を検出することを目的としており、後の複雑な問題を回避します。常にバックアップが用意される一方、作業量や資源を多く必要とするため、時間やコストがかかるという面もあります。

  • リカバリーブロック

これは、Nバージョンプログラミングに似た手法で、N個のソフトウェアバージョンを作成しますが、各バージョンは異なるアルゴリズムで作られます。また、全てのバージョンを同時に使用するのではなく、順次利用されるため、締切が重視される場合に有用です。

  • チェックポイント&ロールバックリカバリー

前述の2手法ほど広くは用いられていませんが、この方法は各計算ごとにシステムテストを実施します。データの破損やプロセッサの大規模故障時に最も効果を発揮します。

ハードウェアの障害耐性技術

まず、ハードウェアの障害耐性は、ソフトウェアに比べ比較的シンプルな考え方です。目的は、細かな故障があっても関連する機器が正しく動作し続けることを保証することにあります。主に採用される手法は以下の通りです。

  • ビルトインセルフテスト(BIST)

これは、ハードウェアが定期的に自動で自己点検を行う仕組みです。機器は迅速にチェックを行い、問題の原因となる部品を即座に交換します。この自己点検の間隔は前もって設定され、最小限の人手で早期の障害検出と修正が可能となります。

  • 三重モジュラー冗長性

TMRは、重要なハードウェアのバックアップとして、3つのコピーを自動生成します。全てが同時に動作しており、1つに障害が生じた際は他の部品が即座に代替します。この手法は有効ですが、3つの同時運用コピーの作成および管理は手間がかかります。

フォールトトレランス vs 高可用性

高可用性とは、システムが停止時間を極力短く保ち、常に稼働し続ける能力を意味します。システムの稼働率、例えば99.999%(ファイブナインズ)が基準となります。

多くの場合、企業は高可用性と耐障害性の技術を組み合わせ、細かな障害やトラブルが発生しても業務を継続できる体制を整えています。両者はシステムの稼働性を示す概念ですが、それぞれ企業にとっての意味合いや重要性は異なります。

Fault Tolerance vs High Availability

耐障害性と高可用性を備えたシステムを構築する際の重要なポイントは以下のとおりです。

  • ダウンタイム: 高可用性システムは、極めて短い停止時間を前提として設計されています。例えば、「ファイブナインズ」と評価されるシステムでは、常に約5分の停止が生じます。耐障害性システムは、これらの影響なく動作し続ける必要があります。
  • 範囲: 高可用性システムは、多くのリソースを活用して障害に対応し、システム全体の停止時間を削減します。一方、耐障害性は、障害を迅速に検知し、システム内の各部に動作を引き継がせるための追加ハードやソフトウェアに依存します。
  • コスト: 耐障害性システムは、常に全ての部品を稼働させるため維持に多大な費用がかかります。保守作業は迅速に行われ、予備の部品も必要です。一方、高可用性は、専門のサービスパッケージの一部として提供されるケースが多いです。

フォールトトレランスとロードバランシング

Webアプリの運用において、耐障害性は負荷分散ソリューションを用いて、継続したサービス提供と迅速な障害復旧を実現するための考え方です。負荷分散とフェイルオーバーは、耐障害性の基本要素となります。

負荷分散により、複数のサーバーで業務を運用できるため、特定の1台に障害が発生しても問題ありません。多くの負荷分散ツールは、各サーバーに均等に負荷を分配し、いずれも故障や停止に強い状態を維持します。

Fault Tolerance and Load Balancing

また、負荷分散は、一部のサーバーに障害が発生した場合にも有効です。例えば、2台の生産サーバーを備えたシステムでは、いずれかに問題が起きた際、負荷分散装置が自動的に役割を引き継ぎます。

フェイルオーバーシステムは、不測の事態に迅速に動作します。システム全体が停止した場合、自動的に別の段階での運用が開始され、メインシステムの復旧作業が進められる仕組みとなっています。

FAQ

Open
What is the Relationship Between Security and Fault Tolerance?
Open
What are Fault Tolerance Requirements?

References

Subscribe for the latest news

Updated:
February 17, 2025
Learning Objectives
Subscribe for
the latest news
subscribe
Related Topics