はじめに
開発者であれば誰しも、予期しないトラブルに直面する日が来ます。
開発フローを通し、出荷までに然るべきフローで評価されたものであっても、思わぬデグレード(不具合)が発生してしまう可能性があります。
デグレードを防ぐ工夫をするのはもちろんですが、もし仮にこの記事を読んでいる今、重大不具合が検知されたら、インシデントトラブルが発生したら、あなたのチームでは速やかにミスなく対応することができるでしょうか?
本記事は、先日デグレードが顧客先で検知された際、チームで備えられていなかったために、多くの対応を一人で実施することになった経験から、チームおよび部署に対して「避難訓練」という内容で勉強会を開催したので、その内容を記載しています。
インシデントとデグレード
インシデント発生時のフロー
弊社では顧客が製品を利用している中で発生した、緊急対応を求められる事象のことをインシデントと呼びます。
インシデントが発生した際、コンサルタントから連絡を受け、開発部署で体制構築をします。
体制構築後は、可及的速やかに事象を解消する必要があります。
インシデントにおいて大切なスキル
私はインシデントにおいては以下の2つが大切だと考えています。
- トラブルを一時的でも解消できるアイデアの引き出し
- 相談に乗ってもらえる同僚を捕まえられること
日頃の顧客問い合わせ対応では、時間がかかったとしても、根本原因の解明が必要ですが、インシデントにおいては原因解明よりも、まずはその場を何とか打開する力が必要です。
問い合わせ対応を常に実施しているチームでは、いつもとは初動が変わるというのが若手のうちは難しい点かと思います。
インシデントは特性上、スピードが肝心です。
判断に迷う場合、広く知見を集めたい場合もあります。
その際、相談できる相手を素早く捕まえるには、日頃から多くの人と繋がりを持っている必要があります。
まだ多くの人と関わっていないメンバーがインシデントを受けた場合は、チームとしてサポートできるように、ルールなどを決めておくと良いと思います。
デグレード発生時のフロー
デグレードが見つかった際、弊社では緊急不具合報告(Emergency)を行います。
報告とともに、不具合が発生する可能性を持つユーザーの抽出や今後の対応を決めます。
Emergencyは全コンサルタントに周知され、原則顧客にも周知されます。
すなわち、発生条件や不具合の内容の記載には丁寧さが要求されます。
今後の対応としては、出荷物の再リリースや顧客ごとの暫定物出荷などがあります。
どの方法を選択するかは、影響の大きさなどから判断します。
デグレード発生時に必要なスキル
デグレードにおいては、以下の3つが大切と考えています。
- そもそもデグレードであることを判断する力
- 速やかに事象をまとめ報告できること
- 対応方針を決定できること
デグレードはいきなりデグレードとして報告されるわけではないため、エラー発生などの事象から、デグレードであるかどうかを判断する力が必要です。
新しいバージョンを適用直後に発生しているなど、報告されている内容を読み取ったり、書かれていなければヒアリングする必要があります。
デグレードが分かった場合、その内容を速やかかつ丁寧にテキストでまとめる力も必要です。
顧客にも周知されるため、確実な内容にし、明瞭な文書にする必要があります。
日頃の不具合修正時の説明においても身につけられる力ですが、意識しているのとそうでないのでは力の差が生まれると思います。
対応方針については、まずそもそもどのような対応が取れるのかを知っている必要があります。
これについては、経験がない場合、いきなり判断を求められても右も左も分からない状態になるかと思います。
避難訓練をしよう
インシデントやデグレード発生時の行動は、いずれも迅速かつ丁寧に様々なタスクを短期間で遂行する必要があります。
一部のスキルは日頃でも鍛えることができますが、「この力が必要になる場合」を意識して仕事をしているかしていないかで、身につき方が変わります。
また、日頃では鍛えることのできない、対応全般に対する知識も必要です。
それらに対し、事前にチームで知識共有を行い、どう行動するか備えることが大切です。
今いる周りのメンバーが経験者ばかりであっても、その経験が最新のフローやルールに沿ったものではないかもしれません。
新しく入ってきたメンバーは、備えずにその場が来てしまうと、慌てている先輩たちを横目にどう動いていいか声をかけづらい状況になってしまうかもしれません。
自然災害が防げないのと同じように、開発者にとってインシデントやデグレードはどれだけ頑張っても100%防げるものではありません。
起きてしまうかもしれない事象に対し、起きたらどうするか?を定期的に見直し、備えてみても良いのではないでしょうか。
まとめ
IT業界におけるインシデントに対する避難訓練は、単なる形式的なものではなく、実際に役立つ「備え」として重要です。
サイバー攻撃やシステム障害など、多様なリスクに備えるため、定期的な訓練を実施し、改善を重ねることが、開発者の安全を守ることに繋がると考えます。
まだ避難訓練を実施していないチームは、ぜひその重要性を再認識し、早急に計画を立てて実行に移すことをお勧めします。