始めに
障害対応で焦ってしまう事が多く、障害対応の流れと
出来うる備えについて書いてみました。
焦らないために
- 障害発生時のワークフローを意識しておく(まず、どこに報告すべきか)
- システム影響あり/なしの場合のエスカレ先を明確にしておく
障害の連絡を受けた場合
- 何が問題なのか
- 障害が発生する前後に何があったのか
- 事態の緊急度
- 初動での暫定対応を決める
再現性の確認
- 本番でしか発生しないのか(検品・開発でも確認可能か)
- 毎回発生するのか
原因特定
- ログ確認
- 構成要素を整理し、要素単位で問題の切り分けを行っていく
(要素の例:DB,Blowser,API等) - 調査しなくていい要素を消去法で消していく
二次災害を起こさないために
障害発生時に、応急手当を急ぐあまりオペミスをしてしまい二次災害が起こる可能性がある
(本番のDBデータを誤って更新 or 削除してしまったり 、誤ってバッチを起動させたりとか・・・)
<例>
・本番環境での操作時にダブルチェックを行う
・事前にコマンド、操作方法等を書き出す(必要であればレビューをしてもらう)
・dry-runで実行できないか検討する
・検品環境で確認できないか検討する
再発防止策の検討
- 根本原因が判明したら同じ障害が発生しない様、再発防止策を検討する
→未然防止策(未然に発生する事を防ぐ)
→再発後防止策(再発した場合の防止策)
<例>
未然防止策
・リリース時のチェックリストを作成する
・テストに障害が発生した時のパターンを盛り込む
再発後防止策
・監視ツールを利用しエラーや障害を検知できる様にしておく
教訓としてまとめる
コンフル等で共有できる様にする
<例>
問題:障害事例の内容
原因:問題を引き起こした要因の分析結果
対策:問題の原因を取り除き再発を防止する為の方法
効果:対策の実施によって得られた効果
最後に
再発防止策としてこういう事例があった!とか、もっとこういう観点があるよ!
というのがあれば教えてください!
↓また、IPAのサイトで障害事例による教訓が展開されていたので興味がある方はご覧になってみてください。
参考文書