こんにちは、プロダクトエンジニアリング部の鈴木です。普段はLIFULL HOME'Sの不動産会社向けプロダクト開発エンジニアのマネジメントを担当しています。
先日、社内ゼミ(勉強会)にて、障害対応時の心構えと障害対応訓練について共有しました。
このゼミは、プロダクトの開発・運用に関わるメンバーが抱える「もしシステム障害が起きたら、どのように対処すればよいのだろう?」という不安を解消し、適切な対応方法を学ぶ機会として開催したものです。
長年稼働しているシステムで有識者が少ない中、いくつかの障害を乗り越えてきた私たちチームの経験に基づいた障害対応について紹介します。
前編では障害対応についての基礎知識や心得について触れました。
後編では、それらのスキルを実際にどのように身につけていくかに焦点を当て、チームで実施した障害対応訓練について話した内容をお届けします。
障害対応をどのように学んでいけば良いのか
LIFULLでは様々な障害対応のマニュアルが用意されています。私たちのチームではこれらのマニュアルの読み合わせを行ってきましたが、実際の障害対応ではスムーズに動けないという課題がありました。これには主に3つの理由が考えられます。

障害対応のプロセスを頭で理解していても、実際に行動できるようになるには多くの課題があります。これらのスキルは実践を通じて習得できますが、実際のところ障害対応の場から学ぶことは簡単ではありません。
障害対応はあくまで問題を解決することが目的であり、学習の場ではないからです。さらに、緊迫した状況下での経験のみで全てのメンバーが成長できるとは限らず、全ての人が一定のレベルで障害対応ができるようになることは難しいと言えます。
実際にメンバーからも、「障害発生時にマニュアルを確認しようとは思い至らなかった」、「経験のない自分が役にたつと思えなかった」という声があがっていました。
それでは、障害対応はどのように学んでいけば良いのでしょうか。
障害対応訓練をやってみた
障害対応訓練とは『SRE サイトリライトアビリティエンジニアリング』では次のように説明されています。
新人は、ドキュメンテーションやポストモーテムを読んだり、トレーニングを受けることによってSREに関する多くのことを学べます。
本物のプロダクションシステムを実際に壊したり直したりすることで得られる経験はそれらに勝ります
私たちのチームでは、実践的なシナリオを通じて知識だけでなく、現場での対応力を高めることを目指し、障害対応訓練を実施しました。
障害対応訓練の流れ

事前準備
事前準備では訓練の目的、シナリオ、体制を決めます。
- 訓練の目的・概要: チームの課題に基づいて設定します
- シナリオ:発生する事象とその対応方法を事前に設定します
- 体制:障害対応メンバーと訓練運営メンバーに分け、役割を明確にします
訓練の目的は、日頃の障害対応や振り返りを観察し、チームが直面している課題に焦点を当てることをおすすめします。チームメンバーから何を課題に感じているかをヒアリングすることも効果的です。
例えば、私たちのチームでは以下のように目的を設定しました。

目的を設定した後は、訓練の概要を決めます。発生する事象の原因や影響範囲、訓練で対応をカバーする範囲を明確にします。私たちのチームが担当するプロダクトでは、障害対応時にはデータのリカバリが必要になることが多いため、それらを訓練に含めるかなどを検討していきました。
シナリオでは、発生し得る事象とそれに対して期待される対応を設定します。リアリティを出すために、実際と同等の開発環境で障害を起こし、訓練を行いました。
本番に近い流れができるように準備することで、実践的な訓練を実施することができます。
当日の実施
当日は、運営側からの不具合報告をきっかけとして、対応メンバーには普段どおりに、事象の確認・調査から対応を進めてもらいました。
訓練終了時間は先に決めておき、時間内にできるところまでとしたのもポイントのひとつです。
営業や広報部署なども社内ステークホルダー役は運営側で疑似役を担いました。
上長への報告・相談はもちろんですが、対応メンバーは社内ステークホルダーへの報告も行い、本番さながらの条件で訓練を実施しました。
また、記録係りは当日は休日をとっているという設定のもと、記録に徹するようにしました。
訓練中は、メンバーの様子をみながら、必要に応じて訓練運営側からサポートを行いました。

事後振り返り
訓練当日に記録した内容を元に、事実に基づいて振り返りを行いました。振り返りはKPTの形式で、障害対応と訓練自体とで振り返りの観点を分けて実施しました。
障害対応自体の振り返りの観点
- いつ、なにが起きて、だれにどのような影響があったか
- チームの体制は適切だったか
- 適切に影響と原因の調査ができていたか
- 情報のキャッチアップ・共有・相談・報告は適切にできていたか
- ステークホルダーへの共有・連絡・相談は適切にできていたか
訓練のやり方・体制の振り返りの観点
- 役割の振り分けは適正だったか
- 記録係の動き方はどうだったか
- 障害対応の基本フローは体験できたと感じるか
振り返りを通じて改善点を明確にし、次回の訓練や実際の障害対応に役立てていきます。
まとめ
今回の社内ゼミ(勉強会)では、全体を通して障害対応時に重要なポイントとそれらをチームで実践できるようになるための訓練方法について共有しました。
訓練に参加したメンバーからは、「一度実施したことで自信になり、いざという時の対応力が向上した」「有事の際に自主性と積極性が高まった」などのポジティブなフィードバックがありました。
実際に、訓練以降に起きた障害対応でメンバーの対応スピードや自主性がアップしたことを私も実感しました。障害対応訓練を通じて、個人のスキルだけでなくチーム全体の結束も強化することができたと感じています。
障害対応の目的は、システムを直すことではなく、顧客への影響の低減・早期回復をすることです。特にエンジニアの場合、まずシステムを直すことに目が向きがちになると思いますが、大事なのは顧客のビジネスやユーザーに与える影響を軽減することです。
そのためには、企画とエンジニアが協力して対応していく必要があります。チームとして安定した障害対応を進めるために、ぜひ障害対応訓練を活用してみてください。
最後に、LIFULLでは共に成長できるような仲間を募っています。 よろしければこちらのページもご覧ください。