はじめに
情報システムを運用するうえで、避けて通れないものがあります。
それはシステム障害です。
例えば、次のようなトラブルが発生することがあります。
- サーバの故障
- ネットワーク機器の故障
- ストレージの障害
- 電源設備の故障
- 地震や火災などの災害
システムによっては、数分間の停止でも大きな影響が発生します。
例えば、銀行の決済システムや自治体の重要な業務システムなどです。
そこで重要になるのが、システムの信頼性設計です。
信頼性設計では、障害が発生することを前提として、
「故障してもサービスを継続できるか」「どれだけ早く復旧できるか」「安全な状態を維持できるか」
を考えます。
今回は、次の内容を学びます。
システムの構成と信頼性設計
│
├─ デュアルシステム
│
├─ デュプレックスシステム
│ ├─ ホットスタンバイ
│ ├─ ウォームスタンバイ
│ └─ コールドスタンバイ
│
├─ 災害を考慮したシステム構成
│ ├─ ホットサイト
│ ├─ ウォームサイト
│ └─ コールドサイト
│
└─ 高信頼化システムの考え方
├─ フォールトトレランス
├─ フェールソフト
├─ フェールセーフ
├─ フェールオーバー
├─ フォールトマスキング
└─ フールプルーフ
それでは、基本から理解していきましょう。
1. システムの信頼性設計とは
1-1. なぜ信頼性設計が必要なのか
コンピュータやネットワーク機器は、どれだけ高性能でも故障する可能性があります。
例えば、サーバが1台しかないシステムを考えてみましょう。
利用者
│
▼
┌──────────┐
│ サーバA │
└──────────┘
│
▼
サービス
この構成では、サーバAが故障するとサービスが停止してしまいます。
利用者
│
▼
┌──────────┐
│ サーバA │
│ 故障! │
└──────────┘
│
×
サービス停止
そこで、予備のサーバを用意することを考えます。
利用者
│
▼
┌──────────┐
│ サーバA │
└──────────┘
│
障害発生
│
▼
┌──────────┐
│ サーバB │
│ 予備機 │
└──────────┘
サーバAが故障した場合に、サーバBへ処理を引き継げるようにします。
このように、障害に備えて機器や機能を多重化することを冗長化といいます。
ただし、予備機を用意するだけでは十分ではありません。
- 予備機はすぐに使える状態なのか
- データは最新の状態なのか
- 障害を自動的に検知できるのか
- 切替時にどの程度停止するのか
といった点も重要です。
2. デュアルシステム
2-1. デュアルシステムとは
**デュアルシステム(Dual System)**とは、
2系統のコンピュータで同じ処理を実行し、その結果を照合することで信頼性を高める構成です。
例えば、2台のコンピュータに同じ計算を実行させます。
入力データ
│
┌──────┴──────┐
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ システムA│ │ システムB│
│ │ │ │
│ 処理実行 │ │ 処理実行 │
└────┬─────┘ └────┬─────┘
│ │
└──────┬──────┘
▼
┌──────────┐
│結果を照合│
└──────────┘
2つのシステムで同じ処理を実行し、結果を比較します。
2-2. デュアルシステムの特徴
デュアルシステムでは、2系統が同じ処理を行います。
例えば、
システムA
100 + 200 = 300
システムB
100 + 200 = 300
という結果であれば、両方の結果が一致しています。
一方、
システムA
100 + 200 = 300
システムB
100 + 200 = 350
となった場合は、何らかの異常が疑われます。
ただし、結果が一致したからといって、必ず正しいとは限りません。
両方のシステムに同じ不具合があれば、誤った結果が一致する可能性もあります。
また、結果が不一致になった場合、2系統の比較だけではどちらが正しいか判断できないこともあります。
2-3. デュアルシステムのメリット
① 処理結果の異常を検出しやすい
2系統の処理結果を照合することで、不一致を検出できます。
② 信頼性を高められる
適切に設計された構成では、1系統の故障時にもう一方の系統で運用を継続できる場合があります。
③ 重要なシステムに適している
処理結果の正確性やサービスの継続性が重要なシステムで利用される考え方です。
2-4. デュアルシステムのデメリット
- 2系統分の設備が必要になる
- 構築・運用コストが増える
- 処理結果の照合や系統切替の仕組みが必要になる
- 共通の原因による障害には別途対策が必要になる
特に、2台とも同じ電源設備を利用している場合、その電源が故障すると両方が停止する可能性があります。
そのため、信頼性を高めるには、サーバだけでなく電源やネットワークなども考慮する必要があります。
3. デュプレックスシステム
3-1. デュプレックスシステムとは
**デュプレックスシステム(Duplex System)**とは、
通常処理を行う主系と、障害時に備える待機系を用意する構成です。
デュアルシステムとの大きな違いは、2系統が常に同じ処理を実行するわけではないことです。
デュプレックスシステム
利用者
│
▼
┌──────────┐
│ 主系 │
│ サーバA │
│ 稼働中 │
└────┬─────┘
│
障害発生
│
▼
┌──────────┐
│ 待機系 │
│ サーバB │
│ 引継ぎ │
└──────────┘
通常時は主系が処理を担当します。
主系に障害が発生した場合、待機系へ処理を切り替えます。
3-2. デュアルシステムとの違い
| 比較項目 | デュアルシステム | デュプレックスシステム |
|---|---|---|
| 基本構成 | 2系統 | 主系と待機系 |
| 通常時の処理 | 両系統で同じ処理を実行 | 主系が処理を担当 |
| 結果の照合 | 行う | 通常は行わない |
| 待機系 | 同じ処理を実行する系統 | 障害に備えて待機 |
| 主な目的 | 処理結果の信頼性向上 | 障害時のサービス継続 |
🍯 デュアルは「2人で同じ仕事をして答え合わせ」、デュプレックスは「1人が仕事をして、もう1人が交代に備える」イメージです。
4. デュプレックスシステムの待機方式
デュプレックスシステムでは、待機系をどのような状態にしておくかによって、切替に必要な時間が変わります。
代表的なのが、次の3つです。
- ホットスタンバイ方式
- ウォームスタンバイ方式
- コールドスタンバイ方式
4-1. ホットスタンバイ方式
**ホットスタンバイ方式(Hot Standby)**とは、
待機系をすぐに処理を引き継げる状態にしておく方式です。
ホットスタンバイ
┌──────────────┐
│ 主系 │
│ サーバA │
│ 業務処理中 │
└──────┬───────┘
│
状態を同期
│
┌──────▼───────┐
│ 待機系 │
│ サーバB │
│ 起動・待機中 │
└──────────────┘
待機系は起動した状態で待機し、必要なデータや状態を同期するなどして、速やかに処理を引き継げるようにします。
メリット
- 切替時間を短くしやすい
- サービス停止時間を抑えやすい
- 重要な業務システムに適している
デメリット
- 待機系の設備や資源が必要
- 状態同期などの仕組みが必要
- 構築・運用コストが高くなりやすい
ただし、ホットスタンバイでも切替時に一時的な停止が発生することはあります。
ホットスタンバイ=必ず無停止というわけではありません。
4-2. ウォームスタンバイ方式
**ウォームスタンバイ方式(Warm Standby)**とは、
待機系をある程度準備した状態にしておき、障害時に必要な処理を行ってから切り替える方式です。
例えば、
ウォームスタンバイ
┌──────────────┐
│ 主系 │
│ サーバA │
│ 業務処理中 │
└──────────────┘
┌──────────────┐
│ 待機系 │
│ サーバB │
│ 一部準備済み │
└──────────────┘
待機系のOSや必要なサービスの一部を起動しておき、障害発生時に追加の起動やデータ反映などを行います。
メリット
- コールドスタンバイより短時間で復旧しやすい
- ホットスタンバイより待機時の資源消費を抑えられる場合がある
デメリット
- ホットスタンバイより切替に時間がかかりやすい
- 障害発生後に追加の準備が必要になる
4-3. コールドスタンバイ方式
**コールドスタンバイ方式(Cold Standby)**とは、
待機系を停止状態などで用意しておき、障害時に起動・準備して切り替える方式です。
コールドスタンバイ
┌──────────────┐
│ 主系 │
│ サーバA │
│ 業務処理中 │
└──────────────┘
┌──────────────┐
│ 待機系 │
│ サーバB │
│ 停止・待機中 │
└──────────────┘
障害が発生した場合、待機系を起動し、必要な設定やデータを準備してから処理を引き継ぎます。
メリット
- 待機時の資源消費を抑えやすい
- 比較的低コストで構成できる場合がある
デメリット
- 切替に時間がかかる
- 復旧までサービスが停止する可能性が高い
4-4. 3つのスタンバイ方式を比較
| 比較項目 | ホット | ウォーム | コールド |
|---|---|---|---|
| 待機系の状態 | すぐに引継ぎ可能 | 一部準備済み | 停止・未起動など |
| 切替時間 | 短い | 中程度 | 長い |
| 待機時の資源消費 | 大きい傾向 | 中程度 | 小さい傾向 |
| 構築・運用コスト | 高い傾向 | 中程度 | 低い傾向 |
| 主な用途 | 停止時間を短くしたいシステム | 復旧時間とコストの両立 | 復旧まで時間を許容できるシステム |
※実際の復旧時間やコストは、製品・同期方法・運用設計によって変わります。
🍯 覚え方
ホット
→ すぐ交代できる
ウォーム
→ 少し準備して交代する
コールド
→ 起動・準備してから交代する
5. 災害を考慮したシステム構成
ここまでは、主にサーバなどの障害を想定してきました。
しかし、実際にはもっと大きな問題が発生する可能性があります。
例えば、
- 地震
- 火災
- 水害
- 大規模停電
- データセンターの設備障害
などです。
このような災害では、同じ建物に設置された主系と待機系が同時に停止する可能性があります。
そこで重要になるのが、災害対策サイトです。
5-1. 災害対策サイトとは
災害対策サイトとは、
主なシステム拠点が利用できなくなった場合に備えて用意する代替拠点です。
例えば、
通常のシステム拠点
┌─────────────┐
│ データセンターA│
│ │
│ 本番システム │
└──────┬──────┘
│
データ複製など
│
▼
┌─────────────┐
│ データセンターB│
│ │
│ 災害対策環境 │
└─────────────┘
という構成です。
災害対策サイトにも、準備状態によって種類があります。
6. ホットサイト
6-1. ホットサイトとは
**ホットサイト(Hot Site)**とは、
災害発生時に短時間で業務を再開できるよう、必要な設備やシステムを稼働可能な状態にしておく代替拠点です。
例えば、
本番サイト
┌──────────┐
│システム稼働│
└────┬─────┘
│
データ同期
│
▼
ホットサイト
┌──────────┐
│稼働準備済み│
│短時間で切替│
└──────────┘
必要な設備が用意され、データも継続的に複製される構成などが考えられます。
特徴
- 災害発生後、短時間で業務を再開しやすい
- 必要な設備を事前に用意する
- 構築・維持コストが高くなりやすい
7. ウォームサイト
7-1. ウォームサイトとは
**ウォームサイト(Warm Site)**とは、
必要な設備の一部を準備しておき、災害発生後に追加の準備を行って業務を再開する代替拠点です。
ウォームサイト
┌──────────┐
│設備を一部準備│
│ │
│追加設定が必要│
└──────────┘
例えば、サーバやネットワーク設備は用意されているものの、最新データの復元や追加設定が必要になる場合があります。
特徴
- ホットサイトより準備コストを抑えやすい
- コールドサイトより短時間で復旧しやすい
- 災害発生後に追加作業が必要になる
8. コールドサイト
8-1. コールドサイトとは
**コールドサイト(Cold Site)**とは、
災害時に利用する場所や基本的な設備を確保しておき、必要なシステムを後から構築する代替拠点です。
コールドサイト
┌──────────┐
│代替拠点を確保│
│ │
│システム構築前│
└──────────┘
例えば、建物・電源・空調などの基本設備は用意していても、サーバの設置やデータ復元が必要になる場合があります。
特徴
- 維持コストを抑えやすい
- 復旧までに時間がかかる
- 長時間の停止を許容できる業務に向いている
8-2. 災害対策サイトの比較
| 比較項目 | ホットサイト | ウォームサイト | コールドサイト |
|---|---|---|---|
| 準備状態 | ほぼ稼働可能 | 一部準備済み | 基本設備などを確保 |
| 復旧時間 | 短い | 中程度 | 長い |
| データの準備 | 継続的な複製など | 復元・更新が必要な場合あり | バックアップからの復元など |
| 維持コスト | 高い傾向 | 中程度 | 低い傾向 |
| 主な目的 | 迅速な業務再開 | コストと復旧時間の両立 | 低コストで代替拠点を確保 |
ここで重要なのは、スタンバイ方式と災害対策サイトは別の概念だということです。
スタンバイ方式は、主に待機系システムの準備状態を表します。
一方、災害対策サイトは、代替拠点全体の準備状態を表します。
9. 高信頼化システムの考え方
ここからは、障害が発生したときにシステムをどのように動作させるかという設計思想を学びます。
代表的なものは次の6つです。
| 用語 | 基本的な考え方 |
|---|---|
| フォールトトレランス | 故障しても機能を継続する |
| フェールソフト | 機能を縮小してでも継続する |
| フェールセーフ | 故障時に安全な状態へ移行する |
| フェールオーバー | 故障時に待機系へ切り替える |
| フォールトマスキング | 故障の影響を外部に見せない |
| フールプルーフ | 人の誤操作による事故を防ぐ |
それぞれの違いを確認しましょう。
10. フォールトトレランス
10-1. フォールトトレランスとは
**フォールトトレランス(Fault Tolerance)**とは、
システムの一部に故障が発生しても、必要な機能を継続できるようにする考え方です。
例えば、サーバを冗長化しておき、1台が故障しても別のサーバで処理を継続する構成が考えられます。
通常時
サーバA:稼働
サーバB:待機
↓
障害発生
サーバA:故障
サーバB:稼働
↓
サービス継続
フォールトトレランスは、特定の装置や切替方式の名前ではありません。
故障を許容してシステムの機能を継続するための設計思想です。
10-2. フォールトトレランスの実現例
- サーバの冗長化
- ネットワーク経路の冗長化
- 電源の冗長化
- RAIDによるディスクの冗長化
- クラスタ構成
などが挙げられます。
ただし、冗長化しただけで必ずサービスを継続できるわけではありません。
障害検知や切替の仕組み、共通障害への対策も必要です。
11. フェールソフト
11-1. フェールソフトとは
**フェールソフト(Fail Soft)**とは、
障害が発生したときに、一部の機能や性能を低下させてでもシステムを継続する考え方です。
例えば、ネットショップで障害が発生した場合を考えてみましょう。
通常時は、
商品検索
商品購入
おすすめ表示
レビュー表示
といった機能が利用できます。
しかし、おすすめ表示機能で障害が発生したとします。
そこで、
商品検索 ○
商品購入 ○
おすすめ表示 ×
レビュー表示 ○
のように、障害のある機能だけを停止し、ほかの機能を継続します。
これがフェールソフトの考え方です。
11-2. フェールソフトのポイント
フェールソフトでは、すべての機能を維持することよりも、重要な機能を継続することを優先します。
例えば、
- 一部機能を停止する
- 処理能力を制限する
- 利用者数を制限する
- 優先度の低い処理を停止する
といった対応が考えられます。
🍯 フェールソフトは「全部できなくても、できることは続ける」と覚えましょう。
12. フェールセーフ
12-1. フェールセーフとは
**フェールセーフ(Fail Safe)**とは、
障害が発生したときに、安全な状態へ移行するように設計する考え方です。
重要なのは、サービスを継続することよりも安全性を優先する点です。
12-2. フェールセーフの例
例えば、鉄道の信号設備を考えてみましょう。
信号設備に異常が発生した場合、
信号設備に異常
↓
安全な制御ができない
↓
列車を停止させる方向へ制御
という設計が考えられます。
また、工場の機械でも、危険な状態が発生した場合に装置を停止させる仕組みがあります。
このように、
故障時に危険な動作を続けないようにする
のがフェールセーフです。
12-3. フェールソフトとの違い
| 比較項目 | フェールソフト | フェールセーフ |
|---|---|---|
| 優先するもの | サービスの継続 | 安全性 |
| 障害時の対応 | 機能を縮小して継続 | 安全な状態へ移行 |
| 例 | おすすめ機能を停止して販売継続 | 異常時に機械を停止 |
🍯 覚え方
フェールソフト
→ できる範囲で続ける
フェールセーフ
→ 安全を優先する
13. フェールオーバー
13-1. フェールオーバーとは
**フェールオーバー(Failover)**とは、
稼働中のシステムに障害が発生した場合、待機系などへ処理を切り替えることです。
例えば、デュプレックスシステムでは次のような切替が行われます。
通常時
┌──────────┐
│ サーバA │
│ 主系 │
└──────────┘
┌──────────┐
│ サーバB │
│ 待機系 │
└──────────┘
↓
サーバA故障
↓
┌──────────┐
│ サーバB │
│ 新しい主系│
└──────────┘
このように、主系から待機系へ処理を切り替えます。
13-2. フェールオーバーの特徴
フェールオーバーでは、
- 障害を検知する
- 待機系への切替を判断する
- 待機系へ処理を引き継ぐ
- サービスを継続・再開する
という流れが考えられます。
自動的に切り替える方式もあれば、手動操作を必要とする方式もあります。
なお、障害から復旧した元の主系へ処理を戻すことは、**フェールバック(Failback)**と呼ばれます。
13-3. フォールトトレランスとの違い
ここも重要です。
フォールトトレランスは、故障しても機能を継続するという考え方です。
一方、フェールオーバーは、障害時に処理を別の系統へ切り替える具体的な仕組みです。
フォールトトレランス
│
│ 実現方法の一つ
▼
フェールオーバー
つまり、両者は同じ意味ではありません。
14. フォールトマスキング
14-1. フォールトマスキングとは
**フォールトマスキング(Fault Masking)**とは、
内部で発生した故障の影響を隠し、外部からは正常に動作しているように見せる仕組みです。
例えば、複数の装置で同じ処理を行い、その結果から正しいと考えられる出力を選択する方式があります。
14-2. 多数決によるフォールトマスキング
3つの処理装置があるとします。
入力
│
┌───────┼───────┐
│ │ │
▼ ▼ ▼
装置A 装置B 装置C
100 100 999
│ │ │
└───────┼───────┘
▼
多数決回路
│
▼
100
装置Cが異常な結果を出していますが、装置Aと装置Bの結果が一致しています。
多数決によって100を採用すれば、装置Cの故障の影響を外部へ出さずに処理できます。
このような考え方を、フォールトマスキングといいます。
14-3. フォールトマスキングの特徴
- 故障の影響を外部へ見せない
- 多重化や多数決などを利用する場合がある
- 利用者からは正常に動作しているように見える
- 共通原因による故障には注意が必要
なお、多数決方式でも、複数の装置が同じように誤動作した場合は、正しい結果を選べない可能性があります。
15. フールプルーフ
15-1. フールプルーフとは
**フールプルーフ(Foolproof)**とは、
人が誤った操作をしても、事故や重大な問題につながりにくいように設計する考え方です。
これまで紹介した技術は、主にシステムの故障への対応でした。
一方、フールプルーフでは人間の操作ミスに注目します。
15-2. フールプルーフの例
① 削除前の確認画面
重要なデータを削除するとき、
本当に削除しますか?
[キャンセル] [削除]
という確認画面を表示します。
誤って削除ボタンを押してしまうリスクを減らすための仕組みです。
② 入力値の制限
例えば、年齢を入力する画面で、
年齢:-100歳
のような不正な値を受け付けないようにします。
③ 誤操作しにくい構造
機器の接続端子を、正しい向きでしか差し込めない形状にすることも、フールプルーフの例です。
15-3. フールプルーフとフェールセーフの違い
| 比較項目 | フールプルーフ | フェールセーフ |
|---|---|---|
| 主な対象 | 人の誤操作 | 故障・異常 |
| 目的 | 誤操作による問題を防ぐ | 異常時に安全を確保する |
| 例 | 誤入力を受け付けない | 異常時に機械を停止する |
🍯 覚え方
フールプルーフ
→ 人が間違えても問題が起きにくい
フェールセーフ
→ 故障しても安全な状態にする
16. 高信頼化技術を比較しよう
今回登場した6つの考え方を整理します。
| 用語 | 重視すること | 具体例 |
|---|---|---|
| フォールトトレランス | 故障しても機能を継続 | サーバの冗長化 |
| フェールソフト | 機能を縮小して継続 | 一部機能を停止して運用 |
| フェールセーフ | 安全な状態へ移行 | 異常時に機械を停止 |
| フェールオーバー | 待機系へ切り替える | 主系から待機系へ切替 |
| フォールトマスキング | 故障の影響を隠す | 多数決による出力選択 |
| フールプルーフ | 誤操作を防ぐ | 入力制限・確認画面 |
これらは完全に独立した技術ではありません。
例えば、
フォールトトレランス
│
├─ フェールオーバー
│
├─ フォールトマスキング
│
└─ フェールソフト
のように、故障を許容するための設計に複数の考え方を組み合わせることがあります。
ただし、フェールセーフのように、継続よりも安全な停止を優先する考え方もあります。
17. 実際のシステムではどう組み合わせる?
例えば、重要な業務システムを考えてみましょう。
利用者
│
▼
┌──────────────┐
│ 本番サイト │
│ │
│ 主系サーバ │
│ │ │
│ 待機系サーバ │
└──────┬───────┘
│
データ複製
│
▼
┌──────────────┐
│ 災害対策サイト│
│ │
│ 代替システム │
└──────────────┘
この構成では、例えば次のような対策を組み合わせられます。
サーバ障害への対策
主系・待機系を用意し、フェールオーバーで切り替える。
拠点全体の障害への対策
別の場所に災害対策サイトを用意する。
一部機能の障害への対策
重要度の低い機能を停止し、主要な業務を継続する。
誤操作への対策
重要な操作に確認画面や入力制限を設ける。
このように、障害の種類に応じて複数の対策を組み合わせることが重要です。
まとめ
この記事で覚えること
- デュアルシステムは、2系統で同じ処理を実行し、結果を照合する構成
- デュプレックスシステムは、主系と待機系を用意する構成
- ホットスタンバイは、待機系をすぐに引き継げる状態にしておく
- ウォームスタンバイは、待機系をある程度準備した状態にしておく
- コールドスタンバイは、障害時に待機系を起動・準備して切り替える
- ホットサイトは、災害時に短時間で業務を再開できる代替拠点
- ウォームサイトは、一部の設備を準備しておく代替拠点
- コールドサイトは、基本設備などを確保しておく代替拠点
- フォールトトレランスは、故障しても機能を継続する考え方
- フェールソフトは、機能を縮小してでも継続する考え方
- フェールセーフは、故障時に安全な状態へ移行する考え方
- フェールオーバーは、障害時に待機系へ切り替えること
- フォールトマスキングは、故障の影響を外部に見せない仕組み
- フールプルーフは、人の誤操作による事故を防ぐ考え方
🍯 はちみつメモ
デュアルは「2系統で同じ仕事をして照合」、デュプレックスは「主系と待機系で交代に備える」。
待機方式は、ホット=すぐ交代、ウォーム=少し準備して交代、コールド=起動・準備してから交代と覚えよう!
高信頼化の考え方は、フォールトトレランス=故障しても継続、フェールソフト=縮小して継続、フェールセーフ=安全優先、フェールオーバー=切替、フォールトマスキング=故障の影響を隠す、フールプルーフ=誤操作を防ぐと整理すると分かりやすいよ!