ストーリー
シナリオ
企業: ECプラットフォーム「ShopNow」
イベント: ブラックフライデーセール(11月最終金曜日)
障害: 10:00開始のタイムセール直後にシステムダウン
タイムライン(事実):
09:55 - タイムセール開始の事前キャッシュウォームアップ実行
10:00 - タイムセール開始、トラフィック通常の8倍に急増
10:02 - 商品サービスのレスポンスタイムが5秒超に悪化
10:03 - 注文サービスがタイムアウト、Kafkaキューにメッセージ滞留
10:05 - データベース接続数が上限に到達、全サービスでDB接続エラー
10:07 - アラート発報(SLO: p95レスポンスタイム 500ms 違反)
10:10 - オンコールエンジニアが対応開始
10:15 - IC任命、War Room設置
10:20 - DBコネクションプール枯渇を特定
10:25 - 商品サービスのレプリカ数を3→10にスケール
10:30 - DB接続プール上限を100→300に引き上げ
10:35 - 一部復旧するも、Kafkaの滞留メッセージ処理で再度負荷
10:40 - Kafkaコンシューマーのスロットリング実施
10:50 - サービス全面復旧
11:00 - 監視強化フェーズに移行
12:00 - インシデントクローズ
影響:
- 50分間のサービス劣化(10:00-10:50)
- 推定売上損失: 5,000万円
- 影響ユーザー数: 約30万人
- カスタマーサポート問い合わせ: 2,000件
Part 1: ポストモーテムドキュメント作成(30分)
タイムライン、影響、根本原因、寄与要因を含むポストモーテムドキュメントを作成してください。
解答例
# ポストモーテム: ブラックフライデータイムセール障害
## 概要
| 項目 | 内容 |
|------|------|
| 発生日時 | 2026-11-27 10:00-10:50 JST |
| 影響時間 | 50分 |
| 重大度 | P1 |
| IC | 田中(SREリード) |
| 影響 | 30万ユーザー、推定5,000万円の売上損失 |
## タイムライン
(シナリオのタイムラインをそのまま整理)
## 根本原因
DBコネクションプールのサイズ(100)がピーク時のトラフィック(通常の8倍)に
対して不十分だった。商品サービスの各Podがコネクションを保持し続け、
DB側の最大接続数に到達した。
## 寄与要因
1. 事前のキャパシティプランニングで8倍トラフィックを想定していなかった
2. オートスケールのトリガーがCPUベースで、DB接続数は監視対象外だった
3. Kafkaコンシューマーの処理速度制限が設定されていなかった
4. アラート発報までに7分のギャップがあった(10:00→10:07)
Part 2: 5 Whys分析(15分)
根本原因を5 Whysで深掘りしてください。
解答例
Why 1: なぜシステムがダウンした?
→ DBコネクションプールが枯渇した
Why 2: なぜコネクションプールが枯渇した?
→ ピーク時のトラフィック(8倍)に対してプールサイズ(100)が不十分
Why 3: なぜ8倍のトラフィックを想定していなかった?
→ キャパシティプランニングで過去最大の3倍までしか想定していなかった
Why 4: なぜ3倍までしか想定しなかった?
→ 事業チームからのトラフィック予測が共有されていなかった
Why 5: なぜ共有されていなかった?
→ マーケティングとエンジニアリング間の大規模イベント事前調整プロセスがなかった
根本原因: 大規模イベント時のクロスファンクショナルな事前調整プロセスの欠如
Part 3: SLO分析(15分)
このインシデントがSLOに与えた影響を計算してください。
解答例
| SLI | SLO目標 | インシデント中の値 | 影響 |
|---|---|---|---|
| 可用性 | 99.9%(月間ダウンタイム43分) | 50分のサービス劣化 | SLO違反(月間バジェット超過) |
| レスポンスタイム(p95) | 500ms | 5,000ms以上 | 10倍の劣化 |
| エラー率 | 0.1%以下 | 推定30% | 300倍の悪化 |
エラーバジェット計算
- 月間許容ダウンタイム: 43.2分(99.9%の場合)
- 消費: 50分 → バジェット超過
- 対応: エラーバジェットポリシーに従い、信頼性改善にフォーカス
Part 4: アクションアイテム策定(15分)
優先度付きのアクションアイテムリストを作成してください。
解答例
| ID | タイトル | 優先度 | 担当 | 期限 |
|---|---|---|---|---|
| AI-001 | DBコネクションプールの動的スケーリング導入 | P0 | SRE | 1週間 |
| AI-002 | DB接続数の監視アラート追加 | P0 | SRE | 1週間 |
| AI-003 | 大規模イベント事前調整プロセスの策定 | P1 | PM+SRE | 2週間 |
| AI-004 | キャパシティプランニングにDB接続数を追加 | P1 | SRE | 1ヶ月 |
| AI-005 | Kafkaコンシューマーのバックプレッシャー設定 | P1 | Backend | 2週間 |
| AI-006 | オートスケールトリガーにDB接続数を追加 | P2 | SRE | 四半期 |
| AI-007 | 大規模イベント前の負荷テスト必須化 | P2 | QA | 四半期 |
Part 5: 改善のレビュー(15分)
3ヶ月後の改善レビューで報告する内容を作成してください。
解答例
| アクションアイテム | ステータス | 効果 |
|---|---|---|
| DB動的スケーリング | 完了 | ピーク時に自動拡張、接続枯渇なし |
| DB接続数アラート | 完了 | 接続数80%で早期警告 |
| イベント事前調整 | 完了 | 年末セールでマーケ+SRE合同計画実施 |
| キャパシティプランニング改善 | 完了 | DB指標を追加、8倍想定でプランニング |
| Kafkaバックプレッシャー | 完了 | コンシューマーの処理速度制御実装 |
| オートスケールトリガー | 進行中 | 設計完了、テスト中 |
| 負荷テスト必須化 | 進行中 | CIパイプラインに組み込み中 |
改善効果の検証
- 年末セールでの同様のトラフィック急増に対して、障害なく処理完了
- DB接続数はピーク時でも上限の60%に収まった
まとめ
| ポイント | 内容 |
|---|---|
| ポストモーテム | 事実ベースで、ブレイムレスに記述する |
| RCA | 表面的な原因を超えて仕組みの問題まで到達する |
| SLO | インシデントのエラーバジェットへの影響を定量化する |
| アクションアイテム | 優先度と期限を明確にし、追跡する |
| レビュー | 改善の有効性を検証する |
チェックリスト
- ポストモーテムドキュメントを作成できた
- 5 Whysで根本原因を分析できた
- SLOへの影響を定量的に分析できた
- 優先度付きアクションアイテムを策定できた
- 改善レビューを設計できた
次のステップへ
最後は卒業クイズです。Month 4の全体を振り返りましょう。
推定読了時間: 90分