佐藤隆BCPの前提知識。
信頼性設計を今日は整理しよう
📖 用語まとめ表
この記事は第8話「事件後も会社は動く ~BCP・BCMとインシデント対応~」の補足エピソードです。
BCP(Business Continuity Plan・ビーシーピー)とは、災害や障害・サイバー攻撃などが発生したとき、会社の業務をできる限り止めずに継続させるための「事業継続計画」のことです。第8話ではBCP全体の仕組みを学びましたが、「そもそもシステムはなぜ止まるのか、止まらないように設計できないのか」という問いに答えるのがこの補足エピソードです。
今回は少し難しい用語が並びますが、考え方の軸は「壊れてもどう動き続けるか」の一点です。焦らず、例えと一緒に読み進めていきましょう。
| 用語(略語) | 読み方 | 一言説明 | 身近な例え |
|---|---|---|---|
| フォールトトレランス | フォールトトレランス | 障害が起きても動き続ける設計 | エンジンが1つ止まっても飛ぶ旅客機 |
| フォールトアボイダンス | フォールトアボイダンス | そもそも障害を起こさない設計 | 高品質な部品だけを使ってエンジンを作る |
| フェールセーフ | フェールセーフ | 障害時に「安全側」へ倒れる設計 | 停電したら踏切の遮断機が自動で下りる |
| フェールソフト | フェールソフト | 障害時に機能を縮小して動き続ける | サーバーが1台落ちても低画質で動画を配信 |
| フォールトマスキング | フォールトマスキング | 障害を外から見えないように隠す設計 | RAIDで1台故障しても読み書きが続く |
| フールプルーフ | フールプルーフ | 人が誤操作しても安全な設計 | ドアが開いたまま洗濯機が回らない仕組み |
| 稼働率(MTBF・MTTR) | かどうりつ | 動いている時間の割合。計算式あり | 1年のうち何日ちゃんと使えたか |
| 冗長化 | じょうちょうか | 予備を用意してシステムを多重化 | 車のスペアタイヤ |
| ロードバランサー | ロードバランサー | 複数サーバーへ処理を振り分ける装置 | 複数レジへお客を均等に誘導する係員 |
| SPOF | Single Point of Failure エスピーオーエフ | ここが壊れると全体が止まる単一障害点 | たった1本の橋しかない孤島のアクセス路 |
📋 佐藤の研修メモ「信頼性設計の基本」



新人研修の記録——読んで理解できたらチェックを
午後2時。CSIRTのミーティングルームには、今月配属されたばかりの新人A(まだ入社3週目)と佐藤の二人だけがいた。
新人Aはノートを開き、ペンを構えて待っている。第8話の本編でBCP(Business Continuity Plan・ビーシーピー、事業継続計画)を学んだが、「そもそもなぜシステムが止まるのか、止まらないように設計できないのか」という疑問がどこかに引っかかっていた。
「BCPって、災害や攻撃が起きたときに会社を動かし続ける計画ですよね。でも……そもそも、サーバーって止まらないように作れないんですか?」
佐藤はコーヒーを一口飲んでから、静かに答えた。
「いい質問だ。BCPを正しく理解するには、その前提——『信頼性設計』を知っておく必要がある。今日はそこを整理しよう」
📘 佐藤の解説「信頼性設計の全体像」



壊れないシステムより、壊れても動けるシステムを作る
佐藤はホワイトボードに「信頼性設計」と大きく書いた。
「まず大きな方向性として、2つのアプローチがある」
フォールトトレランスとフォールトアボイダンス



まず「壊れないようにする」か「壊れても動かす」かの二択だ
フォールトアボイダンス(Fault Avoidance)とは、障害を未然に防ぐアプローチだ。高品質な部品を使う、定期メンテナンスを徹底する——壊れないようにする努力そのもの。
「でも、どんな部品もいつかは壊れる。完璧なフォールトアボイダンスは存在しない」と佐藤は続けた。
そこで登場するのがフォールトトレランス(Fault Tolerance)。「障害耐性」とも呼ばれ、「多少壊れても動き続けられる設計」を指す。
新人Aが「旅客機みたいな?」と言うと、佐藤は少し目を細めた。「そうだ。旅客機はエンジンが1つ止まっても飛べるように設計されている。あれがフォールトトレランスの代表例だ」
フェールセーフとフェールソフト



「止まる」にも2種類ある——安全に止まるか、縮小しながら動くか
フォールトトレランスの中でも、「障害が起きたときにどう動くか」によってさらに2つに分かれる。
フェールセーフ(Fail Safe)は、障害時に「安全側」へ移行する設計だ。踏切の遮断機は停電すると「閉じた状態(遮断した状態)」になる。止まることで安全を確保する、という考え方だ。
「つまり、壊れたら止まる——だけど、安全に止まる。これがフェールセーフです」と新人Aは復唱した。
「そう。それに対してフェールソフト(Fail Soft)は、障害が起きても『縮退運転』して動き続けることを優先する」
動画配信サービスで、サーバーが1台落ちたとき画質を落として配信を続けるのがフェールソフトの例だ。完全な品質ではないが、サービスは止まらない。
フォールトマスキングとフールプルーフ



障害を「隠す」技術と、人のミスを「防ぐ」技術もある
「次は少し毛色が違う2つだ」
フォールトマスキング(Fault Masking)は、障害を外部から見えないように隠す技術だ。代表例はRAID(Redundant Array of Independent Disks・レイド)。複数のディスクにデータを分散して保存し、1台が壊れても利用者には気づかれずに読み書きが続く。「障害を吸収して、表からは正常に見せる」というイメージだ。
フールプルーフ(Foolproof)は少し性格が違う。「人間がどれだけ誤操作をしても安全が保てる設計」を指す。洗濯機のドアが開いていたら回らない、ハンドルから手を離したらブレーキがかかる車——人の操作ミスを前提として、それでも壊滅的な結果にならないように設計されている。
「フールプルーフの『フール(Fool)』は『愚か者』じゃなくて、『人間は間違える』という前提からきてるんです」と新人Aが言うと、佐藤は「そういうことだ」と頷いた。
稼働率・MTBF・MTTR



信頼性を数値で語るには稼働率の計算式が必要だ
「ここからは数値の話だ」
稼働率とは、システムが稼働している時間の割合のこと。これを求めるために2つの指標を使う。
- MTBF(Mean Time Between Failures・エムティービーエフ、平均故障間隔):
故障から次の故障までの平均時間。数値が大きいほど「壊れにくい」 - MTTR(Mean Time To Repair・エムティーティーアール、平均修復時間):
故障してから修復するまでの平均時間。数値が小さいほど「直しやすい」
そして、稼働率の計算式は次のとおりだ。
稼働率 = MTBF ÷ (MTBF + MTTR)
例えば、MTBFが90時間、MTTRが10時間のシステムの稼働率は、
90 ÷ (90 + 10) = 90 ÷ 100 = 0.9(=90%)
「これが試験でよく出る計算パターンです。複数のシステムを組み合わせると稼働率は掛け算になる。直列なら全部の積、並列なら少し複雑になる」と佐藤は付け加えた。
新人Aはすかさずメモした。
冗長化・ロードバランサー・SPOF



冗長化でSPOFをつぶすのが信頼性設計の王道だ
「ここからが実装の話だ」
冗長化(Redundancy・リダンダンシー)とは、サーバーや回線などを複数用意して多重化すること。1つが壊れても別の1つが引き継げる状態を作る。車のスペアタイヤ、予備電源——日常のあらゆる「予備」が冗長化の考え方だ。
複数のサーバーを用意したとき、アクセスを均等に振り分ける装置がロードバランサー(Load Balancer)だ。スーパーで混んできたら「3番レジへどうぞ」と誘導するスタッフのようなものだ。負荷分散と冗長化、両方を担う重要な機能を持つ。
そして信頼性設計で常に注意すべき概念がSPOF(Single Point of Failure・エスピーオーエフ、単一障害点)だ。「ここが止まったら全体が止まる」という一点を指す。
「どれだけ冗長化しても、最後の最後にSPOFが残っていると意味がない。信頼性設計の作業とは、突き詰めればSPOFを洗い出して潰す作業だ」
佐藤の言葉に、新人Aはゆっくりと頷いた。
💬 佐藤のまとめ



信頼性設計なしに、BCPは成立しない
ホワイトボードが用語で埋まった頃、佐藤は一度全体を指差してまとめた。
整理するとこうなる。
- フォールトアボイダンスで『壊れにくくする』
- フォールトトレランスで『壊れても動かす』
- その手段としてフェールセーフ・フェールソフト・フォールトマスキング・フールプルーフがある。
- 稼働率はMTBFとMTTRで数値化できる。
- 冗長化とロードバランサーで実装して、最後にSPOFがないか確認する
新人Aはひととおりノートを見返した。「……BCPって、『こういう設計が崩れたときに組織をどう動かすか』の話なんですね」
「そうだ。第8話で学んだBCPは、これら信頼性設計の土台の上にある。技術で防げる限界まで防いで、それでも起きてしまったとき——組織として何をするかがBCPだ」
研修終了の時刻を少し過ぎていた。新人Aはノートを閉じ、「ありがとうございました」と頭を下げた。
佐藤はコーヒーカップをすすぎながら、独り言のようにつぶやいた。
「ログはすべてを語る——だが、システムが動いていなければログも残らない。だから信頼性設計が要る」






コメント