SREでWheelOfMisfortuneをやってみた


本稿はJCB Advent Calendar 2022の12/5の記事です。

JCB デジタルソリューション開発部 SREチームの笹野と申します。
今回は弊社における障害訓練の取り組みとして実施している、WheelOfMisfortuneについてご紹介します。

WheelOfMisfortuneとは?

障害訓練の形式の1つとして、過去の障害事例を元にシナリオを作成し、それをRPGのように役割を定めてプレイヤー(調査メンバー)が障害の解決を目指してロールプレイを行う、というものです。 この演習をすることで、インシデント対応手順における不足点や認識齟齬を見直し、チームとしてプロセスの改善することを目的とします。

役割

・ダンジョンマスター シナリオのリーダー。シナリオ内で発生するイベントの調整役。

・ノンプレイヤーキャラクター(NPC) ダンジョンマスターのみが行動を規定できるキャラクターとして、シナリオ遂行をフォローする役。

・プレイヤー 主役としてインシデント対応担当をする役。

進め方

最初に以下のようなアラート情報をプレイヤーに見せるところから訓練は始まります。

・現在は 2022/02/03 午前10:34 。あなたは現在青山オフィスの執務室で勤務中です。また、あなたは本日あらゆる本番作業を予定していません。 オンサイトでオンコールシフトにあたっていたプレイヤーは、PagerDutyからのProd環境のCritical発報を受けました。

「Production環境:東京リージョンのノードが1台停止」 ※本アラートはGKEを動作させている東京リージョンのノードが1台再起動したことを意味するものです。

こうした情報をもとに何をするか(インシデント体制を組む/仲間を呼ぶ/他のアプリチームにエスカレする/調査する等々、、)は全てプレイヤーに委ねられ、プレイヤーからの要求にダンジョンマスターは機械的に回答します。

演習の状況を明確に設定する(日時や場所)ことで、曖昧さを排除してどんな状況で対応する必要があるか?を明確にする必要があります。 プレイヤーは自身でログやダッシュボードを参照できるわけではなく、「〜をしてください」という内容をダンジョンマスターに伝え、その回答として対象のメトリクスやログの結果をダンジョンマスターが画面に表示します。

ここで重要なのが「どうやってそれを見つけるか」という点を厳しく見るということであり、「ログを見たいです」と言われたら、何でどんなクエリを実行して参照するか、といった点まで要求を求めます。そうすることで必要な手順を認識できているか(手順書を活用しているか)といった点を確認できます。

3~40分を演習時間として進めますが、進捗によってはダンジョンマスターからコンテキスト/背景を示したり、NPCを登場させてフォローする、といったことを行います。 終了後は15分程度で振り返りを行います。ここで、NPCやフォローメンバーで演習内容のタイムラインを控えておくことで、どんな動き方をしていたかをわかりやすく見直すことができます。

実施してみての感想

学びとなった点を以下記載します。

  • 新たに作成が必要なPlaybook(手順書)の洗い出しができる

いざ実施をしてみると、ロールプレイ中にこんな手順を参照したいけど丁度良いものがない、手順通り実施してみたが適切なコマンドが記載されていない、といったことが明確になります。インシデント対応をする、という心構えで用意していたドキュメントを確認することで詳細なレビューにもつながりますし、結果、改善タスクを洗い出す良い機会になると感じました。

  • インシデント対応全体の流れについて、参加者で共通認識を持ち改善する

インシデント発生時には、どんな役割を作成し、だれがどんな順番で動いていくか、、といったインシデントポリシーを作成しています。 しかし用意されたポリシーを実際のインシデント発生時を踏まえて読み込むという機会は少なく、 いざ訓練としてやってみると、どう動いて良いかわからないという状況になることが多いです。 (特に新規参画メンバーではこの傾向が顕著となります)

この訓練ではインシデント原因だけが特定できればよい、というわけではなく、影響を確認してチーム内外に連携する、そういった流れについても確認し実行することが求められる為、体系的にエスカレーションの流れを復習できます。

  • MonitoringDashboardやログの確認方法等、個別に不足しているスキルを自分自身で認識ができる

調査するプレイヤーにとって必要な細かいスキルを自分で認識できるようになることが非常に良い点だと思います。 ダッシュボードを見る際の日時やログクエリの絞り方やまずはどういった情報にアクセスする必要があるか、そういった点をPlaybookに起こしていきますが、 (周りの助けのない状況で)必死に手順に倣ってやってみることで経験を積む、という良い機会を提供できます。 また、調査するプレイヤーに限らず、運営するダンジョンマスター側としてもトレーニング事象やイレギュラーな要求に的確に対応するには、事前理解は必須であり、学びになる部分が多いと感じます。

  • 準備をする側は大変、だけど既存ケースを流用することでも十分活用できる

進め方に記載の通り、プレイヤーの行動に対してエビデンスを用意しておく必要があるため、こうした準備・シナリオの整理をすること自体が大変ではあります。 ただし、実インシデントを踏まえた再現であれば過去のポストモーテムが活用できますし、そこまでネタバレを気にしなくても十分訓練になる(人を替えて時間を空けてゲリラ的にやる)ことが実感としてわかりましたので、少しずつケースを追加していく・定期的に実施していくことが重要だと思いました。

終わりに

今回の記事ではSREチームで実践している障害訓練の取り組みについて記載しました。まだ数回しか実施できていない取り組みの為、定期的に実施することでチームとしてのスキル向上・ドキュメント整備、ひいてはサービスの信頼性向上に繋げていきたいと思います。

最後になりますが、JCBでは我々と一緒に働きたいという人材を募集しています。 詳しい募集要項等については採用ページをご覧下さい。


本文および図表中では、「™」、「®」を明記しておりません。
Google Cloud, GCPならびにすべてのGoogleの商標およびロゴはGoogle LLCの商標または登録商標です。

記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。

©JCB Co., Ltd. 20︎21