ストーリー
田
田中VPoE
オンコールの基本、エスカレーション、ランブック、健全性管理を学んだ。これらを統合して、うちの組織に合ったオンコール体制を設計してもらう
あなた
Step 1で設計したSRE組織モデルと整合させる必要がありますね
あ
田
田中VPoE
そうだ。SRE部門10名(外部採用2名 + 既存運用チーム8名)という制約の中で、持続可能な体制を作る。加えて、将来的に開発チームもオンコールに参加する移行計画も含めてほしい
田
田中VPoE
その通りだ。いきなり「来月からオンコールに入れ」では反発必至だ。まずSREチームが見本を見せ、開発チームにはシャドーイングから始める
ミッション概要
| 項目 | 内容 |
|---|
| 演習タイトル | オンコール体制の設計 |
| 想定時間 | 90分 |
| 成果物 | オンコール体制設計書 |
前提条件
組織構成(Step 1の設計を踏襲)
SRE部門(10名):
├── SREリード × 1(外部採用・経験者)
├── SREエンジニア × 1(外部採用)
├── プラットフォームエンジニア × 3(運用チームから転換)
├── 可観測性エンジニア × 2(運用チームから転換)
└── インフラエンジニア × 3(運用チームから転換)
対象サービス:
├── ECサイト(Tier 1)
├── 社内API基盤(Tier 2)
└── データパイプライン(Tier 3)
現状の課題
| 課題 | 詳細 |
|---|
| 夜間対応 | 月平均8回(特定の2名に集中) |
| アラート数 | 月200件以上(アクション率30%) |
| MTTR | 平均4.2時間 |
| ランブック | 存在しない |
| シフト体制 | なし(問題があれば山田部長に電話) |
Mission 1: オンコールローテーション設計
要件
SRE部門10名でのオンコールローテーションを設計してください。
- ローテーションモデル: Primary/Secondary × 週次交代
- スケジュール: 3ヶ月分のローテーション表
- スキル要件: 各メンバーの対応可能範囲を定義
- 新人育成: シャドーイング計画
- 制約: SREリードは通常のローテーションに入らない(エスカレーション先)
解答例
ローテーションモデル
| 項目 | 設計 |
|---|
| モデル | Primary/Secondary × 週次交代 |
| ローテーション人数 | 8名(SREリード除く、SREエンジニア1名 + 既存7名) |
| 1人あたりの頻度 | 4週間に1回(Primary or Secondary) |
| シフト時間 | 平日: 09:00-18(通常業務) + 18:00-09(オンコール)、週末: 終日 |
ローテーション表(Phase 1: 最初の3ヶ月)
| 週 | Primary | Secondary | 備考 |
|---|
| 1 | SREエンジニア(外部採用) | プラットフォームA | SREエンジニアがリード |
| 2 | プラットフォームB | 可観測性A | |
| 3 | インフラA | インフラB | |
| 4 | 可観測性B | プラットフォームC | |
| 5 | プラットフォームA | SREエンジニア | |
| 6 | 可観測性A | インフラA | |
| … | … | … | 以降ローテーション |
スキルマトリクス
| メンバー | ECサイト | API基盤 | データPL | 育成計画 |
|---|
| SREエンジニア(外部) | ○ | ○ | ○ | 全サービスカバー |
| プラットフォームA | ○ | ○ | △ | 3ヶ月でデータPLを習得 |
| プラットフォームB | ○ | △ | × | 6ヶ月でAPI基盤を習得 |
| 可観測性A | △ | ○ | ○ | 3ヶ月でECサイトを習得 |
| 可観測性B | △ | ○ | ○ | 3ヶ月でECサイトを習得 |
| インフラA | ○ | ○ | △ | 6ヶ月でデータPLを習得 |
| インフラB | ○ | △ | △ | 6ヶ月で全サービスを習得 |
| プラットフォームC | △ | △ | × | 最初の3ヶ月はシャドーのみ |
シャドーイング計画
Month 1-2: プラットフォームC + 自信のないメンバーがシャドー
→ 経験者のPrimaryにSecondaryとしてペア
→ ランブック作成に参加
Month 3: シャドー卒業テスト
→ ゲームデイで模擬インシデントに単独対応
→ 合格: 通常ローテーションに参加
→ 不合格: 追加1ヶ月のシャドー
Mission 2: エスカレーションフローとアラート設計
要件
- エスカレーションフロー: 時間ベース + 重大度ベースのフロー図
- アラート設計: Step 2で設計したSLOに基づくアラート一覧
- アラートノイズ削減計画: 月200件→目標50件以下への改善計画
- コミュニケーションプラン: インシデント時の連絡体制
解答例
エスカレーションフロー
アラート発報
│
├──[P1/P2]──→ PagerDuty → Primary On-call
│ ├── 5分応答なし → Secondary
│ ├── 15分未解決 → SREリードに通知、IC任命
│ ├── 30分未解決 → EM通知
│ └── 60分未解決 → VPoE通知
│
├──[P3]──→ Slack通知 → 営業時間内に対応
│
└──[P4]──→ ダッシュボード → 週次レビューで確認
SLOベースアラート設計
| アラート | SLI | 条件 | 優先度 |
|---|
| EC可用性バーンレート高 | EC可用性 99.9% | バーンレート > 10(5分間) | P1 |
| EC可用性バーンレート警告 | EC可用性 99.9% | バーンレート > 3(15分間) | P2 |
| ECレイテンシ劣化 | EC P99 ≤ 800ms | P99 > 800ms(10分間) | P2 |
| 決済エラー急増 | 決済可用性 99.95% | バーンレート > 5(5分間) | P1 |
| API基盤エラー | API可用性 99.95% | バーンレート > 5(10分間) | P1 |
| APIレイテンシ | API P99 ≤ 200ms | P99 > 200ms(10分間) | P2 |
| データPL遅延 | 鮮度 ≤ 10分 | 遅延 > 10分(15分間) | P3 |
| データPL処理失敗 | 処理成功率 99.9% | バーンレート > 5(30分間) | P2 |
アラートノイズ削減計画
| フェーズ | 期間 | 施策 | 目標 |
|---|
| Phase 1 | Month 1 | 全アラートの棚卸し、重複削除 | 200→120件 |
| Phase 2 | Month 2 | 閾値の見直し、SLOベースへ移行 | 120→70件 |
| Phase 3 | Month 3 | 自動復旧の実装、グルーピング | 70→50件以下 |
Mission 3: ランブック・プレイブック整備計画
要件
- 優先ランブック一覧: 最初に作成すべきランブック10本のリスト
- ランブックサンプル: 最も頻発する問題のランブック1本を詳細作成
- プレイブック: レイテンシ劣化時の調査プレイブック
- テスト計画: ゲームデイの実施計画
解答例
優先ランブック一覧
| # | ランブック名 | 対象サービス | 頻度 | 優先度 |
|---|
| 1 | ECサイトデプロイロールバック | ECサイト | 月2回 | P1 |
| 2 | DB接続プール枯渇対応 | API基盤 | 月1回 | P1 |
| 3 | キャッシュサーバー障害対応 | ECサイト | 月1回 | P1 |
| 4 | 決済ゲートウェイ障害対応 | ECサイト | 月0.5回 | P1 |
| 5 | Kubernetesポッド再起動 | 全サービス | 月3回 | P2 |
| 6 | 証明書更新手順 | 全サービス | 年4回 | P2 |
| 7 | データパイプライン再処理 | データPL | 月1回 | P2 |
| 8 | CDN障害時のフェイルオーバー | ECサイト | 年2回 | P2 |
| 9 | ディスク容量逼迫対応 | 全サービス | 月1回 | P3 |
| 10 | DNS障害対応 | 全サービス | 年1回 | P3 |
ゲームデイ計画
| 項目 | 内容 |
|---|
| 頻度 | 月1回(第3水曜日 14:00-16) |
| 参加者 | SREチーム全員 + 対象チームの開発者1名 |
| シナリオ | 前月のインシデント or ランブックの検証 |
| 進行 | SREリードがシナリオ注入、参加者がランブックに従い対応 |
| 評価 | 対応時間、手順の正確性、改善点 |
| 成果 | ランブック更新、改善タスク起票 |
達成度チェック
| 観点 | 達成基準 |
|---|
| ローテーション | 持続可能な頻度で全メンバーに公平に分配されている |
| エスカレーション | 時間ベースと重大度ベースの両方が定義されている |
| アラート | SLOベースでアクション可能なアラートのみ設計されている |
| ランブック | 優先度が高い問題のランブックが作成されている |
| 健全性 | 体制の健全性を測るメトリクスが定義されている |
推定所要時間: 90分