EXERCISE 60分

ストーリー

佐藤CTO
SREの基本原則を学んだな。ここからは実践だ
佐藤CTO
我々のECプラットフォームにSREプラクティスを導入する最初のステップとして、信頼性の現状を分析し、エラーバジェットポリシーを策定し、トイルの削減計画を立ててほしい

ミッション概要

ミッションテーマ目安時間
Mission 1可用性の計算と評価15分
Mission 2エラーバジェットの設計15分
Mission 3トイルの特定と削減計画15分
Mission 4SRE導入ロードマップの策定15分

前提条件

サービス: ECプラットフォーム「ShopNow」
構成:
  - Webフロントエンド(Next.js)
  - APIサーバー(Node.js × 3台)
  - PostgreSQL(Primary + Replica)
  - Redis(キャッシュ)
  - Elasticsearch(検索)

先月の障害データ:
  障害1: API障害(30分ダウン)- デプロイ時のDB接続プール枯渇
  障害2: 検索障害(45分ダウン)- Elasticsearchのメモリ不足
  障害3: 決済障害(15分ダウン)- 外部決済APIのタイムアウト
  障害4: Redis障害(10分ダウン)- メモリ上限到達

月間リクエスト数: 3,000,000
先月のエラーレスポンス(5xx): 4,500
チームサイズ: SREエンジニア 3名

Mission 1: 可用性の計算と評価(15分)

要件

上記の障害データをもとに、以下を計算してください。

  1. 先月の可用性(%)を時間ベースで計算
  2. リクエストベースの可用性を計算
  3. 各障害のMTTD/MTTRを推定し、改善ポイントを特定
  4. 現状の可用性レベル(Nines)を判定し、目標SLOを提案
解答例

1. 時間ベースの可用性:

総稼働時間 = 30日 × 24時間 × 60分 = 43,200分
総ダウンタイム = 30 + 45 + 15 + 10 = 100分
可用性 = (43,200 - 100) / 43,200 × 100 = 99.77%
→ Two Nines と Three Nines の間

2. リクエストベースの可用性:

成功リクエスト = 3,000,000 - 4,500 = 2,995,500
可用性 = 2,995,500 / 3,000,000 × 100 = 99.85%
→ Two Nines と Three Nines の間

3. MTTD/MTTR推定:

障害推定MTTDMTTR改善ポイント
API障害5分30分デプロイ後の自動ヘルスチェック
検索障害10分45分メモリ使用量の予測アラート
決済障害3分15分サーキットブレーカー導入
Redis障害2分10分メモリ使用量の自動スケーリング

4. 目標SLO提案:

現状: 99.77%(時間ベース)/ 99.85%(リクエストベース)
提案SLO: 99.9%(Three Nines)
理由: 現状から約0.13ポイントの改善で達成可能な、現実的かつ挑戦的な目標
月間許容ダウンタイム: 43.2分(現状100分を57%削減)

Mission 2: エラーバジェットの設計(15分)

要件

Mission 1で提案したSLOに基づき、以下を設計してください。

  1. エラーバジェットの計算(時間ベースとリクエストベース)
  2. エラーバジェットポリシー(Green/Yellow/Orange/Red)
  3. バーンレートアラートの閾値設定(3段階)
  4. エラーバジェットレポートのテンプレート
解答例

1. エラーバジェット計算:

SLO: 99.9%
エラーバジェット: 0.1%

時間ベース(30日):
  43,200分 × 0.001 = 43.2分/月

リクエストベース(月間300万リクエスト):
  3,000,000 × 0.001 = 3,000エラー/月

2. エラーバジェットポリシー:

レベル消費率リリースポリシーアクション
Green< 50%(< 21.6分消費)通常リリース月次レビュー
Yellow50-80%(21.6-34.6分)高リスク変更延期週次レビュー、テスト強化
Orange80-100%(34.6-43.2分)信頼性改善のみ日次レビュー、SREレビュー必須
Red> 100%(> 43.2分)全変更凍結経営エスカレーション、緊急対応

3. バーンレートアラート:

アラートバーンレートウィンドウアクション
Critical> 14.4x1h / 5mPagerDuty即時通知
Warning> 6.0x6h / 30mSlackチャンネル通知
Info> 3.0x3d / 6hチケット作成

4. レポートテンプレート:

## エラーバジェット月次レポート - 2026年1月
- SLO: 99.9%
- バジェット: 43.2分 / 3,000エラー
- 消費: 100分 / 4,500エラー
- ステータス: Red(SLO未達)
- 主要障害: API障害(30分), 検索障害(45分)
- 改善アクション: デプロイパイプライン改善、ES容量計画

Mission 3: トイルの特定と削減計画(15分)

要件

以下のSREチームの週間作業ログから、トイルを特定し削減計画を策定してください。

週間作業ログ(SREチーム 3名):
- 手動デプロイ作業: 各日2回 × 30分 = 5時間/週
- サーバーログの手動確認: 各日1回 × 20分 = 1.7時間/週
- SSL証明書更新: 月2回 × 45分 = 0.4時間/週
- アカウント作成/権限変更: 週5回 × 15分 = 1.25時間/週
- インシデント対応(手動復旧部分): 週2回 × 30分 = 1時間/週
- ディスク容量チェック: 各日1回 × 10分 = 0.8時間/週
- 週次レポート手動作成: 1回 × 2時間 = 2時間/週
- アーキテクチャ設計レビュー: 2時間/週
- 自動化ツール開発: 5時間/週
- SLOダッシュボード構築: 3時間/週
- ポストモーテム実施: 1時間/週
  1. トイルに該当する作業を全て特定
  2. 月間トイル比率を計算
  3. ROIが最も高い自動化対象トップ3を特定
  4. 3ヶ月の削減ロードマップを策定
解答例

1. トイルの特定:

作業トイル?理由
手動デプロイはい手動・繰り返し・自動化可能
ログ手動確認はい手動・繰り返し・自動化可能
SSL証明書更新はい手動・繰り返し・自動化可能
アカウント作成はい手動・繰り返し・自動化可能
手動復旧はい手動・自動化可能
ディスク容量チェックはい手動・繰り返し・自動化可能
レポート手動作成はい手動・繰り返し・自動化可能
設計レビューいいえ創造的・戦略的
自動化ツール開発いいえエンジニアリング
SLOダッシュボードいいえエンジニアリング
ポストモーテムいいえ永続的な価値がある

2. トイル比率:

トイル時間: 5 + 1.7 + 0.4 + 1.25 + 1 + 0.8 + 2 = 12.15時間/週
総作業時間: 3名 × 40時間 = 120時間/週
トイル比率: 12.15 / 120 × 100 = 10.1%

3. 自動化ROIトップ3:

順位トイル月間時間自動化工数回収期間
1手動デプロイ20時間40時間2ヶ月
2週次レポート8時間16時間2ヶ月
3ログ手動確認7時間24時間4ヶ月

4. 削減ロードマップ:

  • 月1: CI/CDパイプライン構築(デプロイ自動化)→ 月20時間削減
  • 月2: レポート自動生成 + cert-manager導入 → 月10時間削減
  • 月3: ログ自動分析 + ディスク自動管理 → 月10時間削減

Mission 4: SRE導入ロードマップの策定(15分)

要件

「ShopNow」チームにSREプラクティスを段階的に導入するための6ヶ月ロードマップを策定してください。

以下を含めること:

  1. 各フェーズの目標と成果物
  2. 成功指標(KPI)
  3. 必要なリソースと投資
  4. リスクと軽減策
解答例
sre_adoption_roadmap:
  phase_1:
    name: "基盤構築"
    duration: "Month 1-2"
    goals:
      - 主要サービスのSLI/SLO定義
      - エラーバジェットの計測開始
      - 基本的なダッシュボード構築
    kpis:
      - SLO定義済みサービス数: 5以上
      - ダッシュボードカバレッジ: 100%
    resources:
      - SREエンジニア: 2名(50%アロケーション)
      - ツール: Prometheus + Grafana導入
    risks:
      - SLO目標の設定が不適切 → 既存データから段階的に調整

  phase_2:
    name: "プロセス整備"
    duration: "Month 3-4"
    goals:
      - オンコール体制の構築
      - インシデント対応フローの確立
      - ランブック10件以上作成
    kpis:
      - MTTD: 5分以内
      - MTTR: 30分以内(SEV1)
      - ランブックカバレッジ: 主要障害パターンの80%
    resources:
      - オンコール手当の予算化
      - PagerDuty導入
    risks:
      - オンコール負荷による離職 → ローテーション設計と負荷分散

  phase_3:
    name: "自動化推進"
    duration: "Month 5-6"
    goals:
      - トイル比率50%以下の達成
      - CI/CDパイプライン完全自動化
      - 自動復旧の仕組み構築
    kpis:
      - トイル比率: 50%以下
      - デプロイ頻度: 1日1回以上
      - 自動復旧率: 30%以上
    resources:
      - 自動化ツール開発: 2名(100%アロケーション)
    risks:
      - 自動化の複雑化 → シンプルな設計原則を遵守

達成度チェック

ミッションテーマ完了
Mission 1可用性の計算と評価
Mission 2エラーバジェットの設計
Mission 3トイルの特定と削減計画
Mission 4SRE導入ロードマップの策定

まとめ

ポイント内容
可用性計算時間ベースとリクエストベースの両方で評価する
エラーバジェットSLOから導出し、ポリシーとアラートを設計する
トイル削減ROI計算で優先順位をつけ、段階的に自動化する
導入ロードマップ基盤→プロセス→自動化の順で段階的に進める

チェックリスト

  • 障害データから可用性を計算できた
  • エラーバジェットポリシーを設計できた
  • トイルを特定し削減計画を策定できた
  • SRE導入ロードマップを策定できた

次のステップへ

次は理解度チェッククイズです。Step 1で学んだSREの基本原則の理解度を確認しましょう。


推定読了時間: 60分