システム障害の再発防止|原因分析を実効性ある対策へ

IT・開発

「原因は設定ミスだった。次から注意する、で終えてよいのだろうか」

「再発防止策を作ったが、本当に効果があるか判断できない」

システム障害は、サービスが復旧した時点で終わりではありません。

再発防止を考えるには、まず障害原因を「アプリケーション・設定・ネットワーク・ハードウェア・運用」などに分類し、原因に合った対策を選ぶことが重要です。

同じ種類の問題を繰り返さないために、発生原因だけでなく、検出できなかった理由や影響が広がった理由まで振り返る必要があります。

再発防止策が「担当者へ注意喚起する」「レビューを強化する」だけでは、実施したか、効果があったかを判断できません。人の注意力に依存した対策は、時間がたつと形骸化しやすいものです。

25年以上の開発・保守経験から感じるのは、良い再発防止策ほど、特定の担当者を責めるのではなく、仕組み、手順、検知、復旧の弱点を具体的に変えているということです。

この記事では、原因分析を実行可能な対策へ落とし込み、完了と効果を確認する方法を解説します。

システム障害の原因を分類する

原因分類は責任者を決めるためではなく、再発防止策の方向性を決めるために行います。

原因分類 具体例
アプリケーション プログラム不具合、条件漏れ、例外処理不足
設定・構成 設定値誤り、環境差異、設定反映漏れ
ネットワーク 通信断、DNS、FW、負荷集中
ハードウェア ディスク、メモリ、機器故障
運用・手順 手順ミス、確認漏れ、権限設定
外部サービス API障害、クラウド障害、外部接続先

再発防止は「予防・検知・影響軽減」の3方向で考える

すべての障害を完全に防ぐことは困難です。そのため、発生させない予防だけでなく、発生時に早く気付く検知、発生しても影響を小さくする影響軽減を組み合わせます。

対策は、担当者、期限、成果物、確認方法まで決めて初めて実行可能になります。

方向 目的 対策例
予防 同じ問題を発生させない 入力チェック、自動化、設計・レビュー観点追加
検知 発生後すぐに気付く 監視追加、閾値見直し、異常件数の可視化
影響軽減 発生時の被害を小さくする 切り戻し、縮退運転、再処理・重複防止
復旧改善 対応時間と判断負荷を下げる 手順書、連絡網、訓練、判断基準

原因別の再発防止策

 

障害箇所 再発防止策例
ネットワーク障害
  • 監視追加
  • 通信経路の冗長化
  • FW/DNS設定レビュー
  • タイムアウトやリトライ設計
  • 切替手順の整備
ハードウェア障害
  • 冗長化
  • 予兆監視
  • 保守交換
  • 容量・寿命管理
  • バックアップ/復旧試験
アプリ・設定障害
  • 自動テスト
  • 設定差分確認
  • CI/CDでのチェック
  • レビュー観点追加

再発防止策を作る4ステップ

1.事実の時系列を確定する

最初に、発生から検知、連絡、暫定復旧、恒久対応までの時系列を整理します。推測を混ぜず、ログ、作業記録、承認記録などで裏付けます。

時系列には、「起きたこと」だけでなく「本来あるべきだったこと」も並べます。差が見えると、手順や検知の弱点を見つけやすくなります。

2.直接原因・背景要因・流出原因を分ける

直接原因は障害を発生させた直接の事象です。背景要因は、その事象を生みやすくした設計・手順・体制上の条件です。流出原因は、リリース前や監視で検出できなかった理由です。

たとえば直接原因が設定値誤りでも、背景に環境別設定の手作業、流出原因に差分レビュー不足があるかもしれません。

  • なぜ誤りが作り込まれたか
  • なぜレビューやテストで見つからなかったか
  • なぜ監視で早く検知できなかったか
  • なぜ影響が広がったか
  • なぜ復旧に時間がかかったか

3.対策を具体的な作業へ落とす

「レビュー強化」ではなく、「本番と検証環境の設定差分を自動出力し、リリース判定会で確認する」のように、実施内容と完了条件を明確にします。

対策のコストが障害リスクに見合うかも確認します。すべてを大規模改修にせず、短期対策と中長期対策に分けると進めやすくなります。

悪い例:設定確認を徹底する
改善例:環境別設定ファイルの差分一覧をリリース前に自動生成し、担当者とレビュー者が確認記録を残す

担当:基盤チームA
期限:次回リリース判定まで
完了条件:差分一覧・確認記録・試行結果がそろう

4.実施確認と効果確認を分ける

手順書を更新しただけでは、再発防止の効果は確認できません。対策が実施されたことと、実際に誤りを検出できることを分けて確認します。

テスト環境で意図的に異常を発生させ、監視通知や切り戻し手順が機能するかを確認する方法も有効です。

  • 成果物が作成・承認されたか
  • 現場で実際に利用されているか
  • 模擬異常を検出・復旧できるか
  • 類似箇所へ横展開したか
  • 一定期間後に同種障害の発生状況を確認したか

再発防止策の管理テンプレート

対策を会議資料だけに残さず、担当・期限・完了条件を一覧で管理します。

【事象】
障害概要:
直接原因:
背景要因:
流出原因:
影響拡大要因:

【対策】
区分:予防/検知/影響軽減/復旧改善
実施内容:
担当者:
期限:
成果物:
実施確認方法:
効果確認方法:
横展開先:

原因と対策を一対一で結び付けると、対策漏れや過剰対策を確認しやすくなります。

よくある失敗と改善方法

失敗 起こる問題 改善方法
担当者の注意不足で終える 仕組みが変わらず、別の担当者でも再発する 手順・自動化・検知の弱点へ置き換える
対策を多く出しすぎる 優先順位が曖昧になり、未完了が増える リスク低減効果とコストで絞る
実施完了だけを見る 対策が機能しないまま形骸化する 模擬確認や一定期間後の効果確認を行う

若手SE向けチェックリスト

  • 事実の時系列を記録で裏付けた
  • 直接原因・背景要因・流出原因を分けた
  • 予防・検知・影響軽減の3方向で検討した
  • 対策に担当・期限・成果物を設定した
  • 完了条件を第三者が判断できる形にした
  • 実施確認と効果確認を分けた
  • 類似システム・設定・手順へ横展開した

まとめ:再発防止は人ではなく、仕組みを具体的に変える

再発防止の目的は、原因を詳しく説明することではなく、次の障害リスクを実際に下げることです。

担当者を責める分析では情報が集まりにくくなります。事実を基に、仕組み、手順、検知、復旧の改善点を見つけましょう。

  • 直接原因・背景要因・流出原因を分ける
  • 予防・検知・影響軽減を組み合わせる
  • 担当・期限・効果確認まで決める

システム障害対応の基本へ戻る

「現場で役立つ開発・保守の基本」シリーズトップへ戻る

 

タイトルとURLをコピーしました