LESSON 30分

ストーリー

高橋アーキテクト
障害は必ず起きる。大事なのは”起きないようにする”だけじゃなく、“起きたときに素早く対応する”こと

高橋アーキテクトがインシデント対応のフローチャートを見せた。

高橋アーキテクト
パニックにならず、体系的に対応するためのプロセスを整備しよう。オブザーバビリティが整っていれば、原因特定は格段に速くなる

インシデントの分類

// インシデントの重要度分類
enum IncidentSeverity {
  SEV1 = '致命的: サービス全停止、データ損失',
  SEV2 = '重大: 主要機能の障害、一部ユーザーに影響',
  SEV3 = '中程度: 副次機能の障害、回避策あり',
  SEV4 = '軽微: パフォーマンス低下、限定的影響',
}
重要度影響対応時間目標対応体制
SEV1サービス全停止15分以内に対応開始インシデントコマンダー + 全チーム
SEV2主要機能の障害30分以内に対応開始オンコール + 関連チーム
SEV3副次機能の障害4時間以内に対応開始オンコール
SEV4軽微な影響次営業日通常チケット対応

インシデント対応フロー

1. 検知 (Detection)
   │  アラート発火 or ユーザー報告

2. トリアージ (Triage)
   │  重要度判定、インシデントコマンダー任命

3. 対応 (Response)
   │  影響軽減(暫定対応)、コミュニケーション

4. 復旧 (Recovery)
   │  サービス正常化の確認

5. フォローアップ (Follow-up)
      ポストモーテム、再発防止策

各フェーズの詳細

1. 検知

// オブザーバビリティによる自動検知
interface DetectionSources {
  automated: {
    sloAlert: 'エラーバジェット消費速度アラート';
    metricsAlert: 'エラー率/レイテンシ閾値アラート';
    logAlert: 'FATALログ検知';
    syntheticMonitoring: '外部からのヘルスチェック失敗';
  };
  manual: {
    customerReport: 'カスタマーサポートへの報告';
    internalReport: '社内メンバーからの報告';
  };
}

2. トリアージ

interface TriageProcess {
  step1: '影響範囲の確認(ダッシュボードで確認)';
  step2: '重要度の判定(SEV1-4)';
  step3: 'インシデントコマンダーの任命';
  step4: 'コミュニケーションチャネルの開設(Slackチャネル等)';
  step5: '関係者への初報通知';
}

3. 対応(暫定対応を最優先)

// 根本原因の特定より、サービス復旧を最優先
interface ResponsePriority {
  priority1: {
    action: '影響の軽減(暫定対応)';
    examples: [
      '前バージョンへのロールバック',
      'フェールオーバーへの切り替え',
      '問題のあるサービスの隔離',
      'トラフィックの制限(Rate Limiting)',
    ];
  };
  priority2: {
    action: '根本原因の調査';
    tools: [
      'ダッシュボードでメトリクスの異常を確認',
      'トレースで遅延箇所を特定',
      'ログでエラー詳細を確認',
      'デプロイ履歴との相関を確認',
    ];
  };
}

4. コミュニケーション

// インシデント中のコミュニケーションテンプレート
interface IncidentUpdate {
  initial: {
    template: `
      [SEV{severity}] {title}
      影響: {impact}
      現状: 調査中
      担当: {commander}
      チャネル: #incident-{id}
    `;
  };
  progress: {
    template: `
      [更新] {title}
      現状: {status}
      原因(暫定): {cause}
      対応: {action}
      次の更新: {nextUpdate}
    `;
  };
  resolved: {
    template: `
      [解決] {title}
      復旧時刻: {resolvedAt}
      影響時間: {duration}
      原因: {rootCause}
      対応: {resolution}
      ポストモーテム: {postmortemDate}
    `;
  };
}

オンコールローテーション

interface OnCallSchedule {
  rotation: 'weekly';           // 週替わり
  teamSize: 5;                  // 5人で回す
  primaryOnCall: 1;             // プライマリ1人
  secondaryOnCall: 1;           // セカンダリ1人(バックアップ)
  escalationTimeout: '15分';    // 15分応答がなければエスカレーション

  responsibilities: {
    primary: 'アラート対応、初期トリアージ、暫定対応';
    secondary: 'プライマリのバックアップ、エスカレーション先';
  };

  wellbeing: {
    maxConsecutiveWeeks: 1;     // 連続オンコールは1週まで
    compensatoryOff: true;      // 深夜対応時の代休あり
    tooling: 'PagerDutyでアラート管理';
  };
}

まとめ

ポイント内容
インシデント分類SEV1〜SEV4で重要度を定義
対応フロー検知→トリアージ→対応→復旧→フォローアップ
暫定対応優先根本原因調査より、サービス復旧を最優先
コミュニケーション定期的なステータス更新、テンプレートの活用

チェックリスト

  • インシデントの重要度分類(SEV1-4)を説明できる
  • インシデント対応フローの各フェーズを理解した
  • 暫定対応を最優先する理由を説明できる
  • オンコールローテーションの設計ができる

次のステップへ

次は「カオスエンジニアリング」を学びます。障害を”事前に”発見するためのアプローチを見ていきましょう。


推定読了時間: 30分