どうも!ひよこSE(@PiyoOct)です。
フォールトトレラントとは、障害が発生しても大丈夫なように備えておく、システムを設計するときの考え方のようなものです。
何かトラブルが発生してから
ヤバい!ヤバい!どうしよう?
と考えていたのでは、「大丈夫か?このシステム」ってなりますよね。
なので、ヤバくなった時を想定。
もっとまじめに言えば、「障害が発生しても、大丈夫なように備えておきましょうね」というのが、フォールトトレラントです。
フォールトトレラントは、障害が発生しても大丈夫なように備えておく考え方のこと
フォールトトレラントとは、障害が発生しても大丈夫なように備えておく考え方のことです。
じゃあ、具体的にどうやって備えるの?
次の3つです!
その1:フェールセーフ
フェールセーフとは、故障したときに安全性を優先する考え方です。
例えば、こんなのがあります。
- 某銀行(み●ほ銀行)のATMがエラーで止まる(お金のやり取りのため、安全第一)
- 地震のときに、エレベータが非常停止する(揺れてるのに動いていたら危ないため)
- 石油ストーブにうっかり足をぶつけると、勝手に消火することがある
イメージとしては、非常停止ボタンを押して、システムを全停止させる、安全第一の考え方です。
その2:フェールソフト
フェールソフトとは、故障時に継続して稼働することを優先する考え方です。
例えば、こんなのがあります。
- エヴァンゲリオンのアンビリカンケーブルが断線したときの5分間の内臓電源
- 飛行機のエンジンは、最悪1つしか動かないとしても飛び続けることができる
- 体調が悪いけど、いまは仕事が大変なときだから、なんとか出社して定時に帰る
「故障が発生したらすぐに止めてしまえ」といかない場合に、性能ダウン覚悟でも、動かすイメージです。
その3:フールプルーフ
フールプルーフは、人間がうっかりミスしても、誤作動を起こさないようにする考え方のことです。
例えば、こんなのがあります。
- 電池のプラスマイナスを逆にして電源をつけようとしても、つかない
- 洗濯機はフタを閉めないと動かない
- ブレーキとアクセルを踏み間違えても、加速しない(衝突回避の技術ができる?)
うっかりミスをしない人間は、まずいません。
それで、いきなり壊れたり事故につながったら大変なので、可能な限り、誤作動は防ぎましょうという話です。
基本情報技術者試験的には、フォールトトラレントはやっかいな用語
基本情報技術者試験的には、フォールトトラレントは、なかなかにやっかいな用語です。
H24年春期の過去問
H24年春期の過去問を見てみましょう(問題のすぐ下に答えを書くので注意)。
フォールトトレラントシステムを実現する上で不可欠なものはどれか。
ア. システム構成に冗長性をもたせ,部品が故障してもその影響を最小限に抑えることで,システム全体には影響を与えずに処理を続けられるようにする。
イ. システムに障害が発生したときの原因究明や復旧のため,システム稼働中のデータベースの変更情報などの履歴を自動的に記録する。
ウ. 障害が発生した場合,速やかに予備の環境に障害前の状態を復旧できるよう,定期的にデータをバックアップする。
エ. 操作ミスが発生しにくい容易な操作にするか,操作ミスが発生しても致命的な誤りとならないように設計する。
「基本情報技術者試験.com」より筆者作成
この問題の答えは、アです。
イはシステムログの話、ウはバックアップの話、エはフールプルーフの話なので消去法で、アです。
フェールソフトと混同しがち
え?ちょっと待って?フォールトトレラントって、「障害が発生しても大丈夫なように備えておく考え方のこと」って言ってたじゃん。ひよこSEのウソつき!
どっちかといえば、「フェールソフト」に近いよね?
みたいにモヤモヤした人もいるはずです。
さて、フェールソフトですが、「故障時に継続して稼働することを優先する考え方」です。
ア. システム構成に冗長性をもたせ,部品が故障してもその影響を最小限に抑えることで,システム全体には影響を与えずに処理を続けられるようにする。
これを見ると、たしかに「フェールソフトだから、アはちがう」と考えちゃうと思います。
フォールトトラレントは、かなりざっくりとした概念
フォールトトラレントは、実は、かなりざっくりとした概念です。
なので、こう考えてください。
「そもそも、システムは正常に動いて当然。なので、万が一のときも、影響は最小限であるべき」
この考え方が根底にあって、「それじゃあ、障害が発生しても大丈夫なようにどうやって備えようかな?」ってことを実際に考えます。
フォールトトラレント=フェールセーフ+フェールソフト+フールプルーフ
考えた結果、
いや、システムを止めないとマズいぞ!安全第一!
となれば、フェールセーフ的な考え方。
いやいや、システムを止めるわけにはいかない!何としても継続!
となれば、フェールソフト的な考え方です。
なので、
「(ざっくり)フォールトトラレント=(少し細かく)フェールセーフ+フェールソフト+フールプルーフ」
みたいな感じで覚えておいて、あとは過去問で感覚(読解力)を身に付けるしかないですね(*´ω`)。
個人的には、フォールトトラレントとフェールソフトの違いを問うてくる問題が出てきたら、悪問だと思う。
まとめ:フォールトトレラントとは、障害のときに備えておく的な考え
フォールトトラレントとは、障害が発生しても大丈夫なように備えておく、システムを設計するときの考え方のようなものです。
かなりざっくりとしているので、
- そのあとに安全第一で行くのか?
- システムは意地でも止めないようにするのか?
は、突っ込んで検討するものだと思っておいてくださいまし(-_-;)。
コメント