DiRT(障害対応演習)を繰り返して分かった3つのこと
この記事は、NAVITIME JAPAN Advent Calendar 2021の 8日目の記事です。
こんにちは、ぐっちゃんです。
ナビタイムジャパンの全サービスで共通利用するAPI基盤の開発をするチーム(以下、API開発チーム)に所属しています。
当社では障害対策に力を入れていて、「早期検知・迅速な復旧を可能にする」ということを目標に、各チームで対策を講じています。
そうした背景の中で、API開発チームが社内を横断して取り組んでいる"DiRT"についてお話しします。
DiRTとは何か
DiRTは (Disaster in Recovery Training)の略で、簡単に説明すると障害訓練のことです。
意図的にシステムに障害を起こし、対応者がいかに早く障害を復旧させるかのプロセスを学習するプログラムのことを指しています。
どのチームでもサービスの稼働率を落とさないように様々な対策を行なっていると思いますが、どんなに堅固なシステムでも障害が起こる可能性をゼロにするのはとても難しいです。
関係者全員が迅速に行動して早く復旧できるように、障害発生時に近い現場を経験し、実際に障害が起きてしまった際に備えることがこの取り組みの目的です。
API開発チームが実施しているDiRTについて
API開発チームでは、他のチームを巻き込み合同でDiRTを実施しています。
この記事を読み進める上で出てくる登場人物と、当社の社内システムについて軽く説明します。
このように、API開発チームは複数のチームが開発したシステムを使用してAPIを提供しています。何かあったときには問題がどこで発生しているかを切り分け、関連のあるバックエンド開発チームに連絡を取り、一緒に解決する必要があります。
実際に障害が起きた時によくあるフローです。
このように各チームと深い関わりがあるため、チームの垣根を超えて障害対策をする必要があります。
DiRT実施の流れ
合同でDiRTをする際に必要なことは、チーム間で共通意識を作ることです。
まず始めに、全てのバックエンド開発チームのプロジェクトマネージャーと話し、お互いのチームで抱えている障害対策の課題や、DiRTを実施した後に達成したい状況について認識を合わせました。
こうして8つのバックエンド開発チームと実施することが決まりました。
各チームと実施するため、API開発チームとしては合計8回DiRTを実施します。
実際のDiRTの手順です。
以上のことを繰り返し実施することで、障害が発生しても冷静かつ確実に対応できる状態にしていきます。
現状では3/8回実施済みです。
その結果について、ふりかえりに焦点を当ててお話しします。
演習準備・演習実施時に具体的にどのようなことをするのかも気になる方は、バックエンド開発チームがチーム内で実施したDiRTについて過去に記事を書いているので、こちらを読むとイメージがつきやすいかもしれません。
1回目実施結果
今回のDiRTはチーム全員が訓練対象者として参加しました。
ベテランメンバーが活躍し、シナリオ作成者の予想より30分早く復旧しました。
ふりかえりで出た課題の一部を共有します。
素早く障害復旧ができたことは素晴らしいですが、せっかくの訓練の機会なので、次回はベテランメンバーは参加せず新メンバーだけで対応することになりました。
また、チーム合同で実施したからこそ発見した課題もありました。
2回目実施結果
2回目は新メンバーのみが訓練対象者です。
障害対応に慣れず途中で詰まってしまい、シナリオ作成者にヒントをもらってやっと復旧できました。
今回のふりかえりの内容も一部抜粋します。
新メンバーのみで対応したからこそ生まれた課題が沢山ありました。
チーム内・チーム外とのコミュニケーションについてふりかえることが多かったため、特に改善する必要があるという話になりました。
3回目実施結果
3回目も引き続き新メンバーを対象にして実施しました。
今回のふりかえりの一部です。
上記の内容通り、調査以外のコミュニケーションの課題について大きく改善できました。
前回のふりかえりを活かして実践に取り組んだおかげで、第1回のベテランメンバーを含めて対応した時の状態に近づいてきました。
ベテランメンバーからも、動き方が変わったと評価がありました。
1〜3回目実施結果のまとめ
繰り返し実施したことで、迅速に障害を復旧するために必要な要素が見えてきました。
それぞれ要素に対して、各回の対応を評価し、まとめて表を作成しました。
1回目はベテランメンバーも対応しているため、◎が多いです。
それ以外は新メンバーのみを訓練対象者として実施しましたが、2回目から3回目にかけて成長できていることが分かります。
途中から新メンバーのみを対象にしたことで、ふりかえり時にベテランメンバーからアドバイスをもらうことができ、ノウハウを教えてもらういい機会になりました。
繰り返しDiRTをやってみて分かった3つのこと
数をこなす事で障害対応に慣れる
筆者はAPI開発チームに所属してから日が浅く、障害が起きても対応できる自信がありませんでした。
しかし3回目が終わった時点で、どんな障害が起きた時でも対応の流れは大体一緒だということが分かり、障害に怯えることはなくなりました。
チーム間の連携が取りやすくなる
ふりかえりを行う際、合同でDiRTを行ったチームに実際に障害が起きた場合にどのように動いてほしいかを伝えることができました。
また、顔を合わせて話すことがチーム間で仲良くなるきっかけになり、普段の業務でも困りごとがある時に助けを求めやすくなりました。
このように、合同で実施したことによるメリットも生まれました。
障害対応で調査・復旧能力以外の必要なことに気づく
障害対応する際に必要なことは技術力だと思っていましたが、それだけではありませんでした。
他のチームと連絡を取ることや、社内に調査状況を小まめに伝えること等、コミュニケーション力がとても重要でした。
調査や復旧作業ができなくても役に立てることが分かりました。
今後の展望
DiRTを3回実施してチームの課題が浮き彫りになり、改善することによって、チーム全体の障害対応する力が伸びてきました。
残り5チームと実施予定のため、引き続き取り組んでいきます。
また、現段階では新メンバーの育成にフォーカスを当てていますが、ある程度対応ができるようになったら、「複合的な要因による複雑な障害の場合」等とテーマを変えて挑んでいきます。