単一障害点

単一障害点（たんいつしょうがいてん。、SPOF）とは、その単一箇所が働かないと、システム全体が障害となるような箇所を指す。情報システム工学や通信、サプライチェーン・マネジメントなどの分野で使われる概念である。単一故障点と訳されることもある。
概要.
高い可用性が必要なシステムでは、そのシステムを構成する各構成要素の1箇所の障害で全体が停止しないように、各構成要素を冗長化（2重化、3重化など）するが、その際に単一障害点が残らないように設計すべきである。
一般的なコンピュータシステムの例では以下が挙げられる。
ただし過剰な冗長化や多重化は、コスト増に加えて、システムの部品の種類や数、あるいは複雑性が増加する結果として、部品故障発生率や設計・検証・運用のリスクが増加する側面もある。このため単一障害点の解消は、その業務や業務停止の影響度を勘案し、費用対効果およびリスクマネジメントの一環として行う必要がある。
コンピューティングの分野.
コンピューティングの分野では、冗長性は内部コンポーネントのレベル、システムレベル（複数マシンを使用した場合）、または拠点レベル（レプリケーションによる）で実現することができる。
サーバー・クラスターに対して、システムレベルでの高い可用性を保証するためには、通常ロードバランサーが使用される。
高い可用性を持つサーバークラスターの場合、複数の電源機器、ハードドライブ、その他のコンポーネントを使用することで、各サーバーが内部コンポーネントの冗長性を獲得することができる。システムレベルでの冗長性は、あるサーバーが故障した際に代わりに処理を行う予備サーバーを用意することで実現できる。
データセンターはビジネスロジックなどをしばしばサポートしているため、潜在的にはデータセンター自体が単一障害点となる可能性がある。したがって、拠点レベルでの冗長性を確保するためには、クラスタ全体を別の場所に複製しなければならない場合もある。この機能は、IT災害回復プログラム（IT disaster recovery (resiliency) program）の一部としてよく言及される。
ポール・バランやドナルド・デイヴィスは「災害によって停止しない通信ネットワーク」のキーとなるパケット・スイッチングを開発した。ARPANETやインターネット含む、このようなネットワークは、単一障害点が存在しないようにデザインされている。ネットワーク上のどの2点間にも複数の経路が存在するため、どんな1つの経路または1箇所の中間ノードで「動的なルーティング」中にパケットが破損しても、互いに通信を続けることが可能となっている。
単一障害点が生じることを回避するために、次のようなネットワークプロトコルが使用されている。
ソフトウェア工学.
ソフトウェア工学の分野では、アプリケーションやコンピューターシステムが1つのコンポーネントによって厳しく制限されてしまうとき、ボトルネックが発生する。ボトルネックとは、通信経路のすべての部分で最もスループットが低い箇所のことである。
パフォーマンス工学.
ボトルネック（場合によっては"hot spot"とも呼ばれ、最も頻繁に実行されるコード箇所のこと。たとえば、実行回数が最も多い場所。）を特定することは、性能解析と呼ばれる。通常、ボトルネックの解消は、そのために制作されたパフォーマンス・アナライザやプロファイラなどの特製のツールを使用して行われる。その目的は、ボトルネックとなっているコードの特定箇所に対して、全体のアルゴリズム効率を向上させることで、コードの実行をできるだけ早くすることである。
コンピュータ・セキュリティー.
セキュリティーの分野では、システムを構成するたった1つのコンポーネントにミスがあっただけでも、システム全体が危険にさらされる可能性がある。
その他の分野.
単一障害点の概念は、サプライチェーン・マネジメントや交通マネジメントなど、工学、コンピュータ、およびネットワーク以外の分野でも使用されてきた。
単一障害点が生まれる構造設計には、ボトルネックや直列回路（並列回路と対比される）がある。
この概念の実際が実際に適用できる、交通の分野における最近の有名な例としては、2016年1月に数日間、東カナダと西カナダ間の交通が完全に遮断されたの例がある。この橋はの途中に位置しており、他に1つも代わりになる自動車が走行可能な迂回路が存在しなかったためである。また、コネチカット州のノーウォークにある老朽化した旋回橋であるは、開閉時に渋滞を引き起こし、鉄道の線を混雑させている。
単一障害点の概念は、知性の分野でも使用されている。エドワード・スノーデンは、情報源を1つしか持たないことの危険性を「単一障害点（the single point of failure）」という言葉で表現している。