サクッとやってみる障害対応訓練
はじめに
はじめまして。 株式会社サイバーエージェントでService Reliability Group(SRG)に所属している松田正也(@mm_matsuda816)です。 SRGは、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。
本記事では、障害対応フローを普及するためにミニマムに障害対応訓練を実施するまでの進め方を紹介します。
以下のような課題を感じている方の助けになれば幸いです。
- 障害対応フローの普及方法に困っている方
- ジュニアメンバーの障害対応能力向上に悩んでいる方
- ローンチ前に障害対応フローを確認しておきたい方
- 形骸化している障害対応フローをブラッシュアップしたい方
前提
ベースとなる障害対応フローやエスカレーションフロー、障害レベルなど障害発生時に利用するものは作成されていることを前提としています。 もし、これらがまだ整備されていないのであれば、システム障害対応の教科書などを参考に作成しましょう。
障害対応訓練を実施した後の状態目標を決める
障害対応訓練を実施することによって、チームをどういう状態にしたいのか明確に文書化しましょう。 文書化することによって、各登場人物との合意形成がやりやすくなります。
状態目標の例を以下に示します。
- 障害対応フローの期待値がチーム全体で揃っている
- エスカレーションフローが明確になっている
- ジュニアメンバーの障害対応経験値が上がり、オンコールスケジュールに組み込める
- 既存のフローを確認し、改善ポイントが明確になり、改善に向けたタスクが作成できている
マネージャー層と合意し、訓練実施スケジュールを抑える
状態目標が作成出来たら、マネージャー層を巻き込み関係するチームメンバーが参加できるスケジュールを抑えましょう。 業務の片手間に実施するのではなく、参加するメンバーが全員集中して取り組めるようにスケジュールを空けることが重要です。 達成したい状態目標に応じて、どのセクションの人を巻き込むのか調整しましょう。
また、実際に本番で使用する連絡手段を使用して訓練できるようにしましょう。 これにより、障害が起きた場合にどこで連絡が来るのか、訓練に参加していないメンバーも再認識することができます。
参加メンバーと障害対応フローを確認する
訓練を実施する前に、障害対応訓練の中でメインで対応する参加メンバーと障害対応フローを確認しましょう。 すでに運用されているフローであっても、あらためて確認しておくことでフローに沿った訓練を実施でき、フロー自体に問題があれば、改善ポイントを明確に出来るためです。
どんな障害を発生させるかを決める
どんな障害を意図的に起こすのか決めましょう。 達成したい状態目標に応じて、障害の難易度を調整します。
例えば、「エスカレーションフローが明確になっている」が目標の場合は、難しい障害を起こす必要は無いでしょう。LBなどの外部通信の部分を落とし、サービス全断などの障害規模としては大きいが復旧手順は少ないものが良いのではないでしょうか。 「ジュニアメンバーの障害対応経験値が上がり、オンコールスケジュールに組み込める」が目標の場合は、実際に発生したことがある障害に近いものが良いでしょう。難しいものにして解決できない場合はエスカレーションフローに従って連絡できるか確認しても良いですし、解決しやすいものにして自信をつけてもらうのも良いと思います。
もちろん発生させる障害内容は、訓練参加メンバーにバレないようにこっそり協議しましょう。
障害対応訓練を実施する
これまでの準備が出来たら実際に訓練を実施しましょう。 参加メンバーがドキドキしているところを見守りながら、こっそりポチッと障害を発生させましょう。
基本的に進行はすべて参加メンバーに任せ、動きややり取りを見て振り返りポイントをメモしていきましょう。 時間内に終わらなそうであれば、エスカレーションを受けたメンバーと仮定して手助けしても良いかもしれません。
障害対応訓練を振り返る
訓練が終わったら、必ず振り返りを実施しましょう。 ポストモーテムと同様に、個人非難とならないように進めましょう。 フローに不備が見つかれば、その場で修正したり修正するタスクをすぐに切ったりしましょう。 対応に必要なrunbookが足りていなければ作成しましょう。 対応に必要なスキルが足りていないと判断したのであれば、学習コンテンツの提示や作成、参考にできるdocをrunbookに記載するなどし、調査の足がかりを増やしましょう。
また、参加メンバーや訓練に関わったメンバーにアンケートを取り、状態目標を達成するために必要十分な訓練が出来たのか振り返りましょう。
おわりに
障害対応訓練実施に向けた、準備の進め方について紹介しました。 達成したい状態目標によって、訓練内容の難易度は異なりますが、参加者全員の認識を合わせて実施することが重要です。
訓練実施してみたいけど規模が大きいチームでやりづらい…みんな時間が空いて無くてやれない…と悩んでいる方!、サクッと実施してみましょう!