フォールトアボイダンスとは?障害をそもそも発生させない予防設計の考え方

システム開発・テクノロジー
フォールトアボイダンスとは?ざっくりと3行で
  • 高品質なコンポーネントの採用・厳密な設計・徹底したテストによってシステムの障害発生そのものを予防する設計思想・アプローチのこと
  • 障害が発生したときの対処を考える「フォールトトレランス」とは対照的に「そもそも障害を起こさないこと」を目標として品質の高い部品と設計・検証プロセスを重視する
  • 航空宇宙・医療機器・原子力など極めて高い信頼性が求められる分野ではフォールトアボイダンスとフォールトトレランスを組み合わせた多層的な信頼性設計が標準だ

【深掘り】これだけ知ってればOK!

フォールトアボイダンスの代表的な実践:コンポーネントの品質向上(高信頼性部品の採用)・設計の単純化(KISS原則:シンプルな設計は複雑な設計より故障しにくい)・徹底したテスト(単体・結合・システム・負荷テストで障害を事前に発見)・コードレビュー・静的解析(ソフトウェアのバグを実行前に発見)。

フォールトアボイダンスとフォールトトレランスは相互補完的な関係だ。フォールトアボイダンスは障害の発生確率を下げる(予防)。フォールトトレランスは障害が発生しても継続稼働できる(対処)。「障害は起きにくいが、起きても止まらない」という高い信頼性を実現する2段構えだ。

ソフトウェア開発でのフォールトアボイダンスの実践としてDevSecOpsがある。CI/CDパイプラインの中に自動テスト・静的解析・セキュリティスキャンを組み込むことで、本番環境に障害の原因となるバグが混入するリスクを最小化する。

ハードウェアの減格運転(Derating)という考え方:コンポーネントの定格(最大スペック)よりも低い条件で使うことで、過負荷による故障リスクを下げる手法だ。100Wまで使えるコンポーネントを70W以下で使うことで寿命と信頼性が向上する。

どれだけ予防策を講じても全ての障害をゼロにすることは現実的には不可能だ。コンポーネントの経年劣化・予測できない外部要因・未知のバグは必ず存在する。フォールトアボイダンスは障害の発生確率を下げる努力で、フォールトトレランスと組み合わせることが現実的なアプローチだ。

よくある誤解

フォールトアボイダンスをすれば障害はゼロになると思っている

どれだけ予防策を講じても全ての障害をゼロにすることは現実的には不可能だ。経年劣化・予測できない外部要因・未知のバグは必ず存在するため、フォールトトレランスと組み合わせることが現実的なアプローチだ。

フォールトアボイダンスとフォールトトレランスはどちらか一方だけでよいと思っている

両者は目的が異なり相互補完的な関係にある。フォールトアボイダンスで障害の発生確率を最小化しつつ、フォールトトレランスで発生してしまった障害からの影響を最小化するという2段構えが高い信頼性を実現する現実的な設計だ。

会話での使われ方

ITKAGYO運営者デプロイ太郎のアイコン画像

このシステム、テストを徹底してバグを本番に出さないようにしましょう。CI/CDに自動テストを全部組み込んでください。

テックリードがフォールトアボイダンスの考え方を取り入れた開発プロセス改善を指示している場面。

ITKAGYO運営者デプロイ太郎のアイコン画像

コードレビューで静的解析ツールを必須にしました。本番障害の原因になるバグを事前に発見できるので、フォールトアボイダンスの第一歩です。

DevOpsエンジニアが静的解析をフォールトアボイダンスの実践として位置付けて説明している場面。

ITKAGYO運営者デプロイ太郎のアイコン画像

ハードウェアの設計では定格の70%以下で動かすようにします。減格運転でコンポーネントの故障リスクを下げるフォールトアボイダンスの手法です。

ハードウェアエンジニアが信頼性設計の方針を説明している場面。

【まとめ】3つのポイント

  • 高品質なコンポーネント・シンプルな設計・徹底したテストで障害を予防する:フォールトアボイダンスは障害が発生する確率そのものを下げることを目標とした予防的アプローチで信頼性設計の第一段階だ
  • フォールトトレランスと組み合わせて「障害は起きにくいが起きても止まらない」システムを作る:フォールトアボイダンスで発生確率を最小化しフォールトトレランスで発生時の影響を最小化する2段構えが高信頼性システムの現実的な設計アプローチだ
  • CI/CDへの自動テスト・静的解析の組み込みがソフトウェアのフォールトアボイダンスの実践:DevSecOpsの考え方でCI/CDパイプラインに自動テストとセキュリティスキャンを組み込むことでバグが本番に混入するリスクを継続的に最小化できる

よくある質問

Q
フォールトアボイダンスとフォールトトレランスの違いを教えてください。
A

フォールトアボイダンスは障害の発生を予防する(予防医学的なアプローチ)。フォールトトレランスは障害が発生しても継続稼働できる設計(緊急医療的なアプローチ)。両者を組み合わせることが高信頼性システムの基本です。

Q
KISS原則とはどんな考え方ですか?
A

Keep It Simple, Stupidの略で、設計をできるだけシンプルに保つことの重要性を表します。シンプルな設計は複雑な設計より理解しやすくバグが少なく信頼性が高くなります。

Q
ソフトウェア開発でのフォールトアボイダンスの実践方法は何ですか?
A

コードレビュー・静的解析ツール(ESLint・SonarQube)・自動テスト(単体・結合・E2E)・CI/CDへの組み込み・セキュリティスキャンが代表的な実践方法です。

Q
減格運転(Derating)とはどういう意味ですか?
A

コンポーネントの定格よりも低い条件で使うことで、過負荷による故障リスクを下げる手法です。寿命と信頼性の向上に効果的です。

【出典】参考URL

https://www.ipa.go.jp/security/guide/sme/ug65p90000019cfm-att/000073226.pdf :IPAの信頼性設計ガイドライン
https://e-words.jp/w/%E3%83%95%E3%82%A9%E3%83%BC%E3%83%AB%E3%83%88%E3%82%A2%E3%83%9C%E3%82%A4%E3%83%80%E3%83%B3%E3%82%B9.html :IT用語辞典「フォールトアボイダンス」
https://www.sonarqube.org/ :SonarQube静的解析ツール公式サイト

コメント

「IT用語、難しすぎて心が折れそう……」という方のための、ハードル低めな用語辞典です。

情報レベルは「基礎中の基礎」。会話を止めないためのエッセンスだけを抽出しています。分かりやすさを追求するあまり、時々例え話が暴走しているかもしれませんが、そこは「ほどよく」聞き流していただけると幸いです。
ほどよくIT用語辞典システム開発・テクノロジー
デプロイ太郎のSNSを見てみる!!
タイトルとURLをコピーしました