今回は安全性・信頼性に関する用語です。
特にフェールソフトとフォールトトレランスの違いが分かりにくく、ネットでもこの違いを深ぼったものが無かったので、さまざまな例に例えてみました。
→結論はページ下部にジャンプ。
その前に、フェール〇〇、フォールト〇〇の説明からします。
代表的なフェール〇〇、フォールト〇〇
フェールセーフ
故障が生じても安全に停止/維持させる事で利用者を危険にさらさない仕組み。
「安全動作=セーフ」と覚えればOK。
例えば、自動運転する車のセンサーが故障したら、車を自動的に停止して、事故を起こさないように安全に停止する仕組み。など。
→システム開発に置き換えると、、、システムにデータを盗み取るウイルスが侵入した際にネットワークから自動的に遮断することでデータの流出を防ぐ。など。
故障が生じた際に性能低下を許容しつつシステム全体としては動作を維持させる仕組み。
「故障しても完全停止せず弱りながらも動作を続ける=影響をやわらげる=ソフト」と覚えればOK。
例えば、人は足が2本あるので片足を捻挫して痛めても、走れはしないですがもう一つの足があるので捻挫してない方の足を軸にしながら歩きくことはできます。
→システム開発に置き換えると、、通常時にサーバを2台で稼働をさせておき、片方のサーバが落ちても1台で処理継続できる仕組みです。
フォールトトレランス
障害が発生しても予備を使って完全正常状態で稼働し続けること
フォールトは欠陥・失敗、トレランスは耐性という意味。
「障害に備えよう」ということですね。”備えあれば憂なし”。
例えば、試験の時に鉛筆を2本以上用意して、1本が折れてももう1本で試験を続けることができます。
→システム開発に置き換えると、、サーバを2台用意してアクティブ/スタンバイ構成で予備サーバを用意しておき、アクティブのサーバが故障したらスタンバイのサーバを起動して業務を完全な状態で継続します。
利用者が誤った操作をしても危険な状態にならないように設計すること。
直訳すると「おバカ防止」。ちょっといじわるな言葉ですが覚えやすいですね。笑
例えば、スマホの写真を誤って消してしまってもゴミ箱フォルダに保存されるので復活させることができます。
→システム開発に置き換えると、、システム停止やファイル削除できる権限を一部のユーザに絞っておくなどです。
フォールトアボイダンス
障害自体を回避することです。
直訳すると「故障を避ける」です。「危険回避」とかが覚えやすいですかね。
例えば、普段から健康的な食材を口にしたり、運動したり、健康診断をこまめに受診することで、重大な生活習慣病になることを回避できます。
→システム開発に置き換えると、、品質をあげるコーディングや定期的な性能測定を実施します。
上記で5種類を挙げましたが、
フェールとフォールトの違いって難しいでしょね。
どちらも失敗や故障、欠陥を意味なので。
自分の感覚では、
フェール〇〇 → 発生してしまった故障(ダメージ)を受け入れたうえでどう影響を減らすか
フォールト〇〇 → 故障(ダメージ)の完全に影響がでないようにどう備えるか
という理解をしています。
フールプルーフは、フォールトの方に分類されそうですね。
フェールソフト、フォールトトレランスの違い
その上で、本ページの本題となる
フェールソフト、フォールトトレランスの違いですが、
どちらも「予備を持っておく」という感じですが、
サーティーワンアイスクリームに例えると、、
サーティーワンアイスクリームの場合
<フェールソフト>
レギュラーサイズのシングルではなくキッズサイズのダブルしておくことで1つのアイスを落としても半分残るようにリスク分散しておく。
<フォールトトレランス>
絶対にキッズサイズ+ダブルの量が食べたいので、キッズサイズのダブルを2つ買っておき、1つは持ち帰り用の箱に入れて、食べ終わるまでドライアイスで保管しておく。食べようとした方のアイスが全部落ちても、予備の方で目的の量を全て食べられます。
ということになります。
実際アイスを買う時には取り得ない行動ですが、
情報システムであったり、飛行機(エンジンが1つ壊れてももう1つで最低限の飛行は可能)などの安全性・信頼性が求められるモノには導入されています。
情報システムの場合
前提:100TPS捌きたいサービス。
<フェールソフト>
・1サーバ50TPSのサーバ2台で稼働させておく。1台落ちた場合はもう1台で50TPSのサービスを継続させる。(LBで流入制御しながらもう1台が落ちないようにする前提)
<フォールトトレランス>
・1サーバ50TPSのサーバ2台のセットを2セット(合計4台)用意しておき、1セットは稼働させずにスタンバイさせておく。1セットがダウンしたら、スタンバイしていた1セットを稼働させて100TPSのサービスを継続する。
飛行機の場合
<フェールソフト>
・エンジンを2つ付けておき、1つが壊れても残った1つのエンジンで近くの空港に着陸する。
<フォールトトレランス>
-(飛行中の故障に対するフォールトトレランスは無い認識。スタンバイのエンジンを追加で2つ付けておけるなら実現する)
家計や資金計画の場合
<フェールソフト>
・銀行口座を分けて貯金しておくことでA銀行が潰れてもB銀行の預金が残る。
・株を分散投資しておくことで、A社が大暴落してもB社の株は残る。
<フォールトトレランス>
・専業主婦でも良いが子供の将来ために共働きして貯金額をめっちゃ増やしておく、万が一の事が起きても不自由なく子供を進学させられるように相応の生命保険に加入しておく
以上、参考なれば幸いです。