インシデント対応能力を高めたい
インシデント能力を高めるには何をすればいいのか。インシデント能力を分解して、そこから考察してみる。
インシデント対応能力といっても様々な要素を含んでいます。これを分解すると「ハードスキル」や「ソフトスキル」、「対応経験」、「システム理解」、「ツールや仕組み」などがあると考えられます。これらの要素のかけ算によって、インシデント対応能力が決まる、という仮説を提唱します。
ハードスキル
ハードスキルとは、その人が持つインシデント対応のためのノウハウや技術のことでです。具体的にはDBに関する知識やコマンドラインツールの知識、パフォーマンスに関する知識、インシデントマネジメントスキルなど様々なものが挙げられます。インシデントの種類は多種多様です。調査・解決に必要な知識・ノウハウ・テクニックがないと、問題収束までの時間は長くなるし、もしかしたら解決できないかもしれません。
ソフトスキル
ソフトスキルも重要です。インシデント発生時に他チームやステークホルダーとやりとりするためのコミュニケーション能力、インシデント中に冷静に対応するストレス体制、状況判断・指示を行うリーダーシップや意思決定力などが挙げられます。
対応経験
対応経験とは、これまでにインシデント対応を経験をのことです。インシデント対応はある程度技能的にならざるを得ない領域です。インシデント対応を経験したことがあるのとないのでは、いざ対応が必要になった時に落ち着いて動けるかに違いがでるかもしれません。とはいえ、本当のインシデントは発生しないに越したことはありません。また、システムやチームの状況によってはインシデントの発生確率が低かったり、発生しても非常に小規模なもので経験として数えにくいということもあります。
そういう場合は訓練で擬似的に対応経験を積むこともできます。社内の訓練の他には、擬似的にインシデントなどの対応を行う競技のようなものがあります。パフォーマンス関係だとISUCON、セキュリティ関係だとハードニング競技会といったものがあります。ISUCONはWebサービスがお題として与えられ、レギュレーションの中で高速化を図るチューニングバトルです。筆者は参加したことがないのですが、パフォーマンス改善に関する体験を擬似的に積むにはとてもよいと思います。ハードニング競技会とはセキュリテ堅牢化に関する競技です。脆弱性のあるビジネスシステム(ECサイトなど)が与えられ、売り上げを上げつつセキュリティインシデントに対応するというもので、こちらも擬似的にセキュリティインシデントを対応することができます。もちろん仮想的なインシデント対応であり、実際に発生するインシデント対応はより複雑な状況下で行います。それでもやったことがあるのとないのでは変わると思います。
システム理解
システム理解とは、対象となるシステム(自分が責任を持つサービスやシステム)のアーキテクチャやシステム構成、コード、設計、データベース、ドメイン知識をどの程度理解しているかを指します。システムが複雑であればあるほど隠れたトラブルポイントがあり、それを理解することは大切です。ここまでに挙げたスキルセットや対応経験が豊富だとしても、システムに対する理解が低いとインシデント対応を十分にこなすことは難しいでしょう。逆も同様で、システムへの理解は高いがインシデント対応をしたことがなかったり、インシデント対応用のスキルセットを持っていない場合は何をすればいいのかわからなかったり、慌ててしまって対応ができないかもしれません。
ツールや仕組み
ツールや仕組みは個人・組織を問わず、インシデント対応のためのツールを整備したり制度・仕組みを作る取り組みのことです。ツールはSaaSやCLIツールなど、様々なものが考えられます。例えばエラーを管理したりAPMでパフォーマンスを見るためにDatadogやNewRelic、Mackarelを導入できます。また、インシデント発生時にオンコールに通知するためにPagerDutyを導入することもできるでしょう。インシデント対応時に使うツールを検証・選定することもできます。他にもインシデント対応時の動き方をドキュメント整備したり、オンコール制度を作ることもこの領域でしょう。これらの活動によって個人・チームのインシデント対応能力が底上げされると考えます。
まとめ
インシデント対応能力はただ単に技術的なスキルだけではなく、経験やシステム理解、ツール、仕組みのような複数の要素がかけ合わさることで総合的に高められます。むしろ、どれか1つの要素だけでは十分にインシデント対応できないといえるでしょう。もちろん、チーム全員が全ての要素を持つことは難しいかもしれません。各メンバーが補完し合うことで、チームとして高いインシデント能力を持つことはできるはずです。
個人のインシデント対応能力を高める場合、現在自分が持っている要素が何か、足りていない要素は何かを考え、足りていない要素を強化するとよさそうです。例えば、これまでインシデント対応はいろいろやってきて技術と経験はあるが、転職したばかりでシステムをあまり分かっていないのであればシステム理解に力をいれるべきです。チームのインシデント能力を高める場合、各メンバーの強みを洗い出して、役割分担がどのようにできるかを考えるとよさそうです。先の例で挙げた転職しての人であれば、インシデントコマンダーとして状況の整理やコミュニケーションなどをまず行うことができそうですね。