障害事例から学ぶ再発防止策

2026.02.14
障害事例から学ぶ再発防止策

障害事例から学ぶ再発防止策

監視設計の穴が招く“検知できない障害”

CPUやメモリのグラフは緑でも、ユーザーのカートが進まない。よくあるのは、インフラ健全性と顧客体験の指標が分離しているケースです。ヘルスチェックが200を返しても、決済APIのP95遅延が3秒を超えれば離脱は増えます。再発防止の第一歩は、SLOと合致した監視指標に入れ替えることです。

アプリ視点の“黒箱”と“白箱”を併走させる

  • 黒箱監視(合成トランザクション):検索→商品詳細→カート→疑似決済を1分間隔で実行し、HTTP 200だけでなくDOMロード時間、P95/99の閾値を監視。
  • 白箱監視(内部メトリクス):エラー率、キュー滞留、DB接続枯渇、スレッドプール飽和などの「Golden Signals(遅延・トラフィック・エラー・飽和)」をPrometheus等で可視化。

平均値依存は危険です。P95を超過し続ける「バースト」を捉えるBurn Rateアラートを導入すると、閾値と誤検知のバランスが取りやすくなります。例えば「SLO 99.9%に対して、1時間で誤差予算の5%を消費したら通知、6時間で2%ならWarning」など二軸化すると、深夜の無駄な起床を減らせます。

ログとイベントを“検索できる形”に整える

障害時に最も時間を食うのは探索です。構造化ログ(JSON)でリクエストID・ユーザーID・トレースIDを埋め込み、ダッシュボードから1クリックでログ→トレースに遷移できるようにします。LokiやElasticsearchに投げるクエリは、代表的なエラーシグネチャをプリセット化しておき、検索語の標準化を進めます。

復旧より遅い意思決定:エスカレーション設計の失敗

「誰がロールバックを決めるのか」が曖昧だと、5分の復旧が30分に伸びます。役割と権限を明文化し、時間で動く仕組みにしておきます。

  • SEV定義:SEV-1=収益影響/全顧客、SEV-2=一部顧客。SEV-1は即時ページング、5分で応答なければセカンダリ、10分で当番マネージャに自動エスカレーション。
  • 権限表:SEV-1中は「原因特定前でも直近デプロイのロールバック可」「機能フラグの緊急OFF可」を当番に委譲。
  • ランブック:踏むコマンド、見るダッシュボード、切り戻し手順、影響評価のメモ欄を1ページに集約。Slackチャンネルと通話のテンプレも固定。

シフト交代時は「未解決アラート・暫定対応・次の観測ポイント」を3分で引き継ぐスクリプト化が効きます。これだけで夜間のMTTRが短縮します。

障害後の学びを次に活かす:ポストモーテムの型

再発防止は「原因の一刀両断」でなく、組織の手続きに落とし込む営みです。非難のないポストモーテムを48時間以内に実施し、行動項目はオーナー・期日・効果指標を必須にします。

型を固定し、ツールで時短する

  • テンプレ項目:顧客影響(件数/売上)、検知までの時間、復旧までの時間、直近の変更、寄与要因(技術/プロセス/人)、再発防止施策(恒久/暫定)。
  • タイムライン生成:Slack/監視ログから時系列を抽出し、ChatGPTやClaudeで整形要約。ノイズの多いJSONはGeminiに投げてフィールド正規化を補助。
  • コード面:直近コミット差分のアノテーションはCopilotに説明文を下書きさせ、レビュー観点を明確化。

アクションはプロダクトバックログに入れ、SLO違反・検知遅延などの「学び系タスク」には容量を固定(例:全スプリントの10%を確保)。完了後は効果測定(誤検知率、MTTA/MTTR、アラート総数)で投資対効果を可視化します。

身近な企業活用例:小売ECの“在庫0でも売れる”事件

小売EC(Kubernetes運用)で、在庫キャッシュが壊れて欠品商品が販売され、返品・クレームが急増した事例です。監視はインフラ中心で、合成トランザクションがなく、検知はCSの問い合わせが起点。原因はRedisのキーTTL誤設定と在庫APIのリトライ暴走で、キャッシュが永続化され実在庫と乖離しました。

失敗からの改善

  • 黒箱監視:テスト商品で検索→カート→決済直前までの合成トランザクションを導入。商品在庫の一致チェックもシナリオに追加。
  • 白箱監視:在庫APIのP95遅延とHTTP 5xx比率、Redisキー件数・ヒット率・Eviction数をメトリクス化し、乖離が5分継続でSEV-2を発報。
  • フォールバック:在庫API異常時はグレースフルデグレードで「在庫確認中」の表示に切替、購入動作をブロック。サーキットブレーカーを閾値超過で自動ON。
  • エスカレーション:SEV-1は5分/10分ルールを明文化、ロールバック権限を当番に委譲。
  • ポストモーテム:検知遅延を主要ギャップに設定し、CS→SREへのホットラインを新設。SLOに「在庫整合性エラー率0.01%以下」を追加。

実務では、Lokiのクエリ作成をChatGPTに下書きさせ、BigQueryの在庫差分ビューはGeminiでSQL案を生成。在庫APIにメトリクス埋め込みのコードはCopilotでスニペットを補助、ポストモーテムの要約はClaudeで初稿を作成しました。結果として、MTTRは90分→25分、誤検知は40%減、3カ月で同種の再発はゼロ。CSの一次検知から監視の自動検知へ置き換えられました。

障害は消せませんが、検知速度・意思決定・学習サイクルは設計できます。監視指標をSLOに合わせ、権限と手順を時間で動かし、学びを行動に埋め込む。これらを地道に回すことが、サーバ監視運用事業の価値そのものであり、事業継続の確率を静かに高めていきます。