SAP-C02-072 · セクション 09 / タスク 2.4
Multi-AZ / Multi-Region Reliability設計
マルチAZ / マルチリージョン / 障害分離 / 可用性 / リージョン依存関係 / 障害範囲
ゴール
信頼性要件から、
保護対象
可用性目標
耐える障害範囲
必須依存関係が整理され、必要な障害分離境界が決まっている状態から始めます。
ここで確認するのは、
マルチAZにしたか
マルチリージョンにしたかではありません。
要求された障害を発生させる
↓
障害側を利用できないものとして除外
↓
生存側だけを見る
↓
保護対象の必須依存経路を最後までたどる
↓
業務機能が成立するかです。
障害後にも必須依存経路が最後まで残ることを、障害分離成立の判断基準にします。
1. 配置状態と障害分離成立は別
例えば、アプリケーションが複数AZに配置されているとします。
AZ-A
├─ アプリケーションA
└─ 注文データ
AZ-B
└─ アプリケーションB見た目はマルチAZです。
しかしAZ-Aを利用できないものとして除外すると、
AZ-B
└─ アプリケーションB
↓
注文データなし
↓
注文処理不可となります。
したがって、
アプリケーションのマルチAZ配置
→ 成立
注文受付全体のAZ障害分離
→ 未成立です。
判断対象は個別リソースではなく、保護対象となる業務機能全体です。
2. 障害境界を1つ消してから評価する
障害分離を確認するときは、対象となる障害境界を最初から存在しないものとして扱います。
AZ障害を想定する場合
AZ-A
× 利用不能
AZ-B
○ 利用可能この状態で、
AZ-Bだけで
注文受付を成立させられるかを確認します。
リージョン障害を想定する場合
リージョンA
× 利用不能
リージョンB
○ 利用可能この状態で、
リージョンBだけで
注文受付を成立させられるかを確認します。
平常時に両方を利用できるかではなく、片方を完全に失った状態で評価します。
3. 保護対象から必須依存経路をたどる
例えば注文受付が、
利用者
↓
入口
↓
注文アプリケーション
↓
認証
↓
注文データ
↓
決済という経路で成立しているとします。
障害後には、
入口
アプリケーション
認証
注文データ
決済のすべてについて、
生存側だけで利用できるかを確認します。
途中に1つでも、
障害側にしか存在しない必須依存があれば、
必須依存経路
→ 切断
↓
保護対象
→ 成立しないと判断します。
4. マルチAZでは生存AZ側の経路を見る
AZ障害への耐性を確認する場合も、考え方は同じです。
例えばAZ-Aを失ったあと、
AZ-B
├─ アプリケーション ○
├─ 必要なネットワーク ○
├─ 必要なデータ ○
└─ 必須依存サービス ○であれば、生存側に必要な経路が残っています。
一方、
AZ-B
├─ アプリケーション ○
├─ 必要なネットワーク ○
└─ 注文データ ×なら、
マルチAZ配置
→ している
AZ障害後の注文受付
→ 成立しないです。
具体的にどの複製方式や復旧方式を利用するかではなく、必要な状態を生存AZ側から利用できるかをここでは確認します。
5. マルチリージョンではリージョン単独成立を見る
リージョン障害では、
リージョンAを完全に除外
↓
リージョンBだけを評価します。
例えばリージョンBに、
アプリケーション
注文データがあっても、
認証
→ リージョンAへ必須依存していれば、
リージョンA障害
↓
認証不可
↓
リージョンBでも注文受付不可となります。
したがって、
2リージョンにリソースが存在することではなく、
生存リージョン単独で
保護対象を成立させられることを確認します。
6. 障害境界をまたぐ必須依存を探す
生存側から必須依存経路をたどるときは、
生存側
↓
障害側へ戻る経路がないか確認します。
例えば、
リージョンB
└─ 注文アプリケーション
│
└────→ リージョンAの認証なら、
リージョンB単独成立
→ 不可です。
同様に、
生存側のアプリケーション
↓
障害側の設定や、
生存側のサービス
↓
障害側の内部APIが必須なら、その依存関係が障害分離を壊します。
確認するのは依存関係の名前ではなく、
その依存が失われたとき
保護対象を継続できるかです。
7. 生存経路を構成する依存関係をまとめて監査する
生存側だけで業務機能を成立させるために必要なものを、1本の経路として確認します。
| 確認対象 | 監査すること |
|---|---|
| アプリケーション | 生存側で必要な処理を実行できるか |
| データ | 生存側から必要な状態を利用できるか |
| 内部サービス | 必須処理が障害側へ戻らず成立するか |
| AWSサービス | 生存側で必要なサービス・機能を利用できるか |
| ネットワーク | 必須接続先まで到達できるか |
| 証明書・鍵・設定 | 生存側だけで必要な構成情報を取得できるか |
| 外部依存 | 生存側から必要な外部サービスへ到達できるか |
| 切り替え制御 | 障害側を使わず正常側へ移行できるか |
これらを個別に再定義するのではなく、
障害後の必須依存経路に
切断点がないかという1つの基準で監査します。
8. 共通依存による「両方同時停止」も確認する
複数AZ・複数リージョンに配置されていても、
AZ-A ─┐
├─→ 共通の必須依存
AZ-B ─┘または、
リージョンA ─┐
├─→ 共通の必須依存
リージョンB ─┘となっている場合があります。
その共通依存が停止すると、
両方の生存経路
→ 同時に切断されます。
したがって、
場所が分かれているだけではなく、
同じ障害で同時に失われる
必須依存を共有していないかも確認します。
9. 「存在する」だけでなく利用可能性まで見る
依存先が完全停止していなくても、保護対象が成立しないことがあります。
例えば、
外部認証
↓
応答はする
↓
通常50 ms
障害時3秒となり、
アプリケーション側でタイムアウト
↓
注文受付失敗する場合です。
この場合、
依存先は存在するものの、
必要な条件で利用できないため、生存経路は成立していません。
障害後の可用性は、
接続できるかだけでなく、
保護対象を成立させられる状態かで判断します。
10. 切り替え制御も生存経路の一部として扱う
正常側に必要なアプリケーションやデータがあっても、
正常側へ移行するための制御が障害側へ必須依存していれば問題があります。
例えば、
正常リージョンへの切り替え開始
↓
障害リージョン内の管理処理が必須なら、
障害リージョン利用不能
↓
切り替え開始不可となる可能性があります。
ここでは、
どのサービスで切り替えるかは決めません。
確認するのは、
切り替え成立に必要な依存経路が
障害側へ戻っていないかまでです。
11. 障害分離監査シート
| 項目 | 内容 |
|---|---|
| 保護対象 | 注文受付 |
| 想定障害 | リージョンA利用不能 |
| 生存側 | リージョンB |
| 必須経路 | 入口 → アプリ → 認証 → 注文データ → 決済 |
| 障害側への必須依存 | 認証がリージョンAへ依存 |
| 共通依存 | なし |
| 生存側だけで成立 | 不可 |
| 判定 | リージョン障害分離 未成立 |
対策を選ぶ前に、
どこで経路が切れているかを明確にします。
12. シナリオ
要件
リージョン障害時にも
注文受付を継続する構成
リージョンA
├─ 注文アプリケーション
├─ 認証
└─ 注文データ
リージョンB
├─ 注文アプリケーション
├─ 注文データ
└─ 決済
│
└────→ 認証はリージョンA障害
リージョンA
× 利用不能生存経路監査
入口 ○
↓
アプリケーション ○
↓
認証 ×
↓
注文データ ○
↓
決済 ○途中の認証で必須経路が切れます。
したがって、
マルチリージョン配置
→ あり
リージョン障害後の注文受付
→ 不可
リージョン障害分離
→ 未成立です。
13. 混同ポイント
| 誤判断 | 正しい判断 |
|---|---|
| 複数AZにアプリがあればマルチAZ成立 | 生存AZだけで業務機能全体が成立するか確認する |
| 2リージョンにリソースがあれば十分 | 生存リージョンだけで必須依存経路が成立するか確認する |
| 障害側への通信が平常時成功するので問題ない | 障害側を完全に除外して評価する |
| データだけ複製すれば十分 | 業務機能を成立させる全必須依存を確認する |
| 依存先が応答していれば利用可能 | 遅延や部分障害でも保護対象が成立するか確認する |
| 正常側に環境があれば切り替え可能 | 切り替え制御自身の依存関係も確認する |
14. SAP-C02での判断フロー
信頼性設計条件を確認
↓
要求された障害境界を1つ除外
↓
生存側だけを見る
↓
保護対象から
必須依存経路を最後までたどる
↓
障害側へ戻る必須依存がある?
│
├─ ある
│ ↓
│ 障害分離 未成立
│
└─ ない
↓
共通依存で
生存側も同時に失われる?
│
├─ 失われる
│ ↓
│ 障害分離 未成立
│
└─ 失われない
↓
依存先は必要な条件で利用可能?
│
├─ 利用不可
│ ↓
│ 障害分離 未成立
│
└─ 利用可能
↓
生存側だけで
保護対象が成立
↓
障害分離 成立まとめ
マルチAZ / マルチリージョンの信頼性設計では、
複数の場所に置いただけでは成立を判断しません。
障害境界を1つ失う
↓
生存側だけを見る
↓
保護対象の必須依存経路をたどる
↓
最後まで切れずに成立することを確認します。
重要なのは、
配置状態ではなく、
障害後の業務機能成立性です。
主要AWS公式資料
- AWS Certified Solutions Architect - Professional 試験ガイド(SAP-C02)
- AWS Well-Architected フレームワーク — REL10-BP01 複数の場所にワークロードをデプロイする
- AWS Well-Architected フレームワーク — 障害部分を切り離してワークロードを保護する
- AWS 規範ガイダンス — マルチリージョンの基本 3: ワークロードの依存関係を理解する
理解確認
このページの内容を8問で確認します。
理解確認8問へ →