フォールトトレラントシステム
フォールトトレラントシステムに求められる基本的特性は以下の通りである。
単一障害点(single point of failure)がないこと(障害に対して全体の障害とならないよう対策が施されていること)
単一故障点(single point of repair)がないこと(ハードウェア故障についても同様)
障害部品の隔離ができること
障害の伝播を防ぐこと
代替モードがあること
さらに、フォールトトレラントシステムは予定されたサービス停止と予期しないサービス停止の両方を尺度として使うことができる。通常、これらはアプリケーションレベルでの話であり、ハードウェアレベルの話ではない。これらを考慮した値を可用性と呼び、パーセントで表す(つまり、全時間のうち、サービス停止していない時間が何パーセントか)。99.999% の可用性を保証されたシステムは、統計的に99.999%の時間稼動し続けるはずである。
フォールトトレラントシステムにおける障害復旧はロールフォワード(roll-forward)とロールバック(roll-back)に分けられる。システムに障害が発生しエラーとなったとき、ロールフォワード復旧ではその時点のシステム状態で復旧を行い、処理をさらに先に進める。ロールバック復旧ではシステム状態を少しだけ前に戻して(例えばチェックポイントを使って)そこから処理を再開する。ロールバック復旧では、チェックポイント(戻す地点)と障害発生地点との間の処理は冪等(何度実行しても一回実行したのと同じ)でなければならない。いくつかのシステムはエラーの種類やエラー発生箇所によってロールフォワードとロールバックを使い分けている。
個々のシステム内では、フォールトトレランス性は例外的な状態を想定してそれに対処できるようにシステムを構築することで実現される。また、一般に自己安定性を持たせることによってシステムがエラーのない状態に収斂させることでフォールトトレランス性を実現する。しかし、システム障害が重大でそれに対処するのに非常にコストがかかる場合、よりよい方法は何らかの二重化をすることである。
障害によってはシステム(あるいは操作者や結果)を危険にさらす可能性がある。これを防ぐため、ミッションクリティカルなシステム(兵器システム、油圧機械など)はセーフモードを備える。これはインターロック機構やソフトウェアで実装可能である。