混ざりやすい専門用語 〜 フェール〇〇、フォールト〇〇

3 min read読了の目安(約3500字

概要

何度も同じ単語を調べ直していたことに気付いたので
個人的に「混ざりやすい専門用語」を備忘としてまとめました。

索引

  • フールプルーフ
  • フェールセーフ
  • フェールソフト
  • フェールオーバー (vs スイッチオーバー)
  • フォールトトレラント
  • フェールバック
  • フォールトアボイダンス
  • フォールトマスキング
  • フォールバック

フールプルーフ

直訳で、バカにも耐えるという意味になります。

エンジニアがよく「流石にこんな操作はしないだろう」と思って安易に機能開発するとユーザーによる想定外の使い方でシステムが落ちるケースをみたことがあると思いますが、これはフールプルーフな設計になっていないということです。例えば、管理画面で商品一括登録をする機能があるというシナリオで、開発者の想定としては「大体使われても数百件の一括登録」という認識であるのに対し、あるヘビーユーザーがその機能を使い1万件の商品一括登録を試み、メモリ不足でシステムが落ちたなど。フールプルーフな設計で開発をする場合は「100件以上登録しようとしたら適切なエラーメッセージを返す」というようにすれば良い。モンキーテストを実施すればどの部分をフールプルーフにすべきかが効率よく洗い出せると思います。

他の例では

  • 電子レンジのドアを閉めないと加熱出来ない
  • 「+」と「-」が逆だと入らない電池ボックス
  • 蓋が空いてると回らない洗濯機

などもフールプルーフの範囲内(出典:キタミ式イラストIT塾応用情報技術者令和03年 P733)

フェールセーフ

故障が発生した場合は、安全性を確保する方向で壊れるように仕向けておく方法です。
故障の場合は、安全性が最優先」とする考え方です。

(出典:キタミ式イラストIT塾応用情報技術者令和03年 P732)

うちの洗濯乾燥機、動作中にうっかりフィルターを抜くと「ERROR」となって停止するので「ああ、これがフェールセーフか」と(フールプルーフでもある。つまり、フールな野郎はこの私)

フェールソフト

異常が発生した際に故障や誤動作をする箇所を切り離して、システム全体を停止させずに機能は低下してもシステムが稼働し続けられるようにする考え方。部分回復ともいう。故障(フェール)をソフトに(柔らかく)と覚えれば覚えやすい。故障の場合は、継続性が最優先とする考え方。

故障が発生した場合にシステム全体を停止させるのではなく、一部機能を切り離すなどして、動作の継続を図る方法です。これにより、障害発生時にも、機能は低下しますが処理を継続することができます。

(出典:キタミ式イラストIT塾応用情報技術者令和03年 P733)

代表的な方法に、システムの重要な箇所を二重化しておいて、故障が発生しても、もう一方の系で運用を続ける方式があります。

(出典:令和03年【春期】 応用情報技術者パーフェクトラーニング過去問題集)

デュプレックスシステムを採用したらフェールソフトな設計になっていると言える。
フォールバックするように開発したらそれはフェールソフトな設計になっていると言える。
とにかく故障しても継続出来れば良い。

もしも、フェールソフトとフォールバックが混ざったら以下を参考にすると良いかもしれません。

フェイルソフトの思想に従って、フォールバックを行う

「多少しょぼくなっても、止まるよりはマシだよね?」な考えに基づいて、機能や性能を制限して動かし続ける

(出典:「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典 | 「フェイルソフト(fail soft)」と「フォールバック(fallback)」の違い)

フェールオーバー (vs スイッチオーバー)

フェールオーバーは、デュプレックスシステムの文脈で、あるサーバーで障害が発生した場合に待機系のサーバーに自動で切り替えること。

スイッチオーバーは、人が手動で切り替えること。

デュプレックスシステム
【英】duplex system
デュプレックスシステムとは、主系(現用系)と従系(待機系)の2つのシステムが用意されたシステムのことである

出典: Weblio辞書 | デュプレックスシステム

フェールバック

フェールオーバーの逆で、主系で発生した障害が直ったら待機系から主系に戻すこと。「フェイル(障害発生)」してサーバー復旧したら「バック(元に戻す)」すると覚えたら覚えやすいのではなかろうか。

フォールトトレラント

障害許容設計とも呼び、システムの一部に障害が発生してもシステム全体を停止させることなく機能低下させてでも稼働させ続けること。「故障しても耐える」と言う考え方。フォールトトレランとを実現する方法としてはフェールセーフ、フェールソフト、フールプルーフがあります(参考:キタミ式イラストIT塾応用情報技術者令和03年 P732)

フォールトアボイダンス

ヒューマンエラーや障害などを発生しにくくなる設計にすることやその行い。
機械であれば、定期的に点検し新しい部品に交換したり、管理画面での入力ミスによるシステム障害を防ぐためにバリデーションを強化したりすること。フールプルーフな設計にすることもフォールトアボイダンスのうちに含まれる。フォールトアボイダンスはシステムの信頼性を高めて故障そのものの発生を防ぐという点で、障害を前提とするフォールトトレラントとは対照的な考え方になります。

フォールトマスキング

故障が発生した時に外部から「故障が発生したこと」を隠蔽(マスキング)して、外部のサービスに影響を与えないようにすること。例えば、システムAとシステムBが連携しており、システムAが出力する時間を元にシステムBのある機能が発火する仕組みになっているとする。システムA内部の時間が狂った場合はシステムBにも影響を与え、予想外のタイミングで発火することになる。これはフォールトマスキングされていない設計になっている。対策としては、不安定なシステムAの時間管理機能を三つに冗長化し、多数決により他二つの正常な時間を返すように設計し開発することでフォールトマスキングになる。

フォールバック

システム全体が止まることを避け、性能低下させてでも重要機能を稼働させ続けること。
Skypeでの大事な機能が「通信すること」であるならば、ネットワークが詰まっているのに高画質なままでやりとりさせて通話そのものもままならなくなるよりも、解像度を落としてでも問題なく通話出来るようにしておくこと。縮退運転ともいう。

最後に

ネットの情報がよく間違っていたり、単語の示す意味の範囲が不明瞭というつらみもあり、「これを毎回調べるのも時間掛かるしいつかちゃんとまとめておかないとな」と考えていたので、まとめたものが今回の記事になります(残念ながら、単語がどこまでを示しているのか問題を完全に解決出来たわけではないです)。もしも「あ、ここ微妙に違うかも」等があれば喜んで調査させていただきます。それでは。

参考文献