単一障害点

出典: フリー百科事典『ウィキペディア(Wikipedia)』
Jump to navigation Jump to search
単一障害点の1例。コンピュータ間の通信ネットワークでは、ルーター等が冗長化されていなければ単一障害点となりうる。

単一障害点(たんいつしょうがいてん。: single point of failureSPOF)とは、その単一箇所が働かないと、システム全体が障害となるような箇所を指す。情報システム工学通信サプライチェーン・マネジメントなどの分野で使われる概念である。単一故障点と訳されることもある。

概要[編集]

高い可用性が必要なシステムでは、そのシステムを構成する各構成要素の1箇所の障害で全体が停止しないように、各構成要素を冗長化(2重化、3重化など)するが、その際に単一障害点が残らないように設計すべきである。

一般的なコンピュータシステムの例では以下が挙げられる。

  • ハードディスクRAIDで冗長化しても、そのRAIDアダプターが1枚ではRAIDアダプター障害時には全体が障害となる
  • RAIDコントローラが2重化されたディスク装置でも、ファームウェア障害や筐体障害の場合は全体が障害になりうる
  • ディスク装置の全ハードウェアを冗長化しても、ソフトウェア障害などによるデータ破損時にはバックアップデータが無ければ復旧できない
  • コンピュータ・クラスターでは、そのクラスタリング用ソフトウェア自体が単一障害点である
  • 電源装置を二重化しても、その先の分電盤が同じでは分電盤の障害時には全体が障害となる
  • 完璧なソフトウェアテストはほとんどなケースで存在しないため、ソフトウェア自体はある確率でバグを抱えているが、バグの発現確率を下げるため、同じ要求仕様に基づいた異なるソフトウェアを2つ以上作り、それらが同じ動作をするときに限り動作させるということで、ソフトウェア・システム自体が単一障害点になるのを回避できる

ただし過剰な冗長化や多重化は、コスト増に加えて、システムの部品の種類や数、あるいは複雑性が増加する結果として、部品故障発生率や設計・検証・運用のリスクが増加する側面もある。このため単一障害点の解消は、その業務や業務停止の影響度を勘案し、費用対効果およびリスクマネジメントの一環として行う必要がある。

コンピューティングの分野[編集]

コンピューティングの分野では、冗長性は内部コンポーネントのレベル、システムレベル(複数マシンを使用した場合)、または拠点レベル(レプリケーションによる)で実現することができる。

サーバー・クラスターに対して、システムレベルでの高い可用性を保証するためには、通常ロードバランサーが使用される。

高い可用性を持つサーバークラスターの場合、複数の電源機器、ハードドライブ、その他のコンポーネントを使用することで、各サーバーが内部コンポーネントの冗長性を獲得することができる。システムレベルでの冗長性は、あるサーバーが故障した際に代わりに処理を行う予備サーバーを用意することで実現できる。

データセンターはビジネスロジックなどをしばしばサポートしているため、潜在的にはデータセンター自体が単一障害点となる可能性がある。したがって、拠点レベルでの冗長性を確保するためには、クラスタ全体を別の場所に複製しなければならない場合もある。この機能は、IT災害回復プログラム(IT disaster recovery (resiliency) program)の一部としてよく言及される。

ポール・バランドナルド・デイヴィスは「災害によって停止しない通信ネットワーク」のキーとなるパケット・スイッチングを開発した。ARPANETインターネット含む、このようなネットワークは、単一障害点が存在しないようにデザインされている。ネットワーク上のどの2点間にも複数の経路が存在するため、どんな1つの経路または1箇所の中間ノードで「動的なルーティング」中にパケットが破損しても、互いに通信を続けることが可能となっている。

単一障害点が生じることを回避するために、次のようなネットワークプロトコルが使用されている。

ソフトウェア工学[編集]

ソフトウェア工学の分野では、アプリケーションやコンピューターシステムが1つのコンポーネントによって厳しく制限されてしまうとき、ボトルネックが発生する。ボトルネックとは、通信経路のすべての部分で最もスループットが低い箇所のことである。

パフォーマンス工学[編集]

ボトルネック(場合によっては"hot spot"とも呼ばれ、最も頻繁に実行されるコード箇所のこと。たとえば、実行回数が最も多い場所。)を特定することは、性能解析と呼ばれる。通常、ボトルネックの解消は、そのために制作されたパフォーマンス・アナライザプロファイラなどの特製のツールを使用して行われる。その目的は、ボトルネックとなっているコードの特定箇所に対して、全体のアルゴリズム効率を向上させることで、コードの実行をできるだけ早くすることである。

コンピュータ・セキュリティー[編集]

セキュリティーの分野では、システムを構成するたった1つのコンポーネントにミスがあっただけでも、システム全体が危険にさらされる可能性があります。

その他の分野[編集]

単一障害点の概念は、サプライチェーン・マネジメント[1]や交通マネジメント[2]など、工学、コンピュータ、およびネットワーク以外の分野でも使用されてきた。

単一障害点が生まれる構造設計には、ボトルネック直列回路並列回路と対比される)がある。

この概念の実際が実際に適用できる、交通の分野における最近の有名な例としては、2016年1月に数日間、東カナダ西カナダ間の交通が完全に遮断されたNipigon River Bridgeの例がある。この橋はTrans-Canada Highwayの途中に位置しており、他に1つも代わりになる自動車が走行可能な迂回路が存在しなかったためである[3]。また、コネチカット州ノーウォークにある老朽化した旋回橋であるNorwalk River Railroad Bridgeは、開閉時に渋滞を引き起こし、鉄道のNortheast Corridor線を混雑させている[2]

単一障害点の概念は、知性の分野でも使用されている。エドワード・スノーデンは、情報源を1つしか持たないことの危険性を「単一障害点(the single point of failure)」という言葉で表現している[4]

関連項目[編集]

概念

アプリケーション

文学

脚注[編集]