インシデントは「ソフトウェアが意図しない動作をしている状態」くらいな認識でいると良い

いわゆる「インシデント対応フロー」が整備されてる組織は多いはず。今所属している会社でもそうで、第一発見から暫定対応・恒久対応、何ならポストモーテムの実施も含めて手順が明文化されている。

一方で「対応フローを発動するか」の基準についてはどうだろうか。要はインシデントの定義とは?という話。

調べてみると、いろいろな人がいろいろな定義をしているように感じる。絶対的な正解はなく流派のようなものがあるような印象。その中で自分は次のように定義している:

ソフトウェアにまつわるインシデント = ソフトウェアが意図しない動作をしている状態

これに従うと、例えばこのようなものがインシデントに当てはまる:

  • 例外処理が甘く、特定の操作をしたことでエラーを起こしてしまい 500 ページに遷移した。

  • リクエストのスパイクや悪意ある DDoS 攻撃に耐えられず、レイテンシーが急激に悪化した。

  • ユーザーが注意書きに従わず操作を誤り、郵便番号の欄に電話番号を入力してしまった。

三つ目についてはソフトウェア起因かというとやや怪しく、人によってはインシデントとして扱わないかと思う。ただ僕は、こういうものもインシデントとして扱うようにしている。とりあえずは影響を把握して、緊急度の判断をして、…のような、いつものインシデント対応。

「あれ、これってインシデントに該当するっけ?」と悩むくらいなら、とりあえずインシデントとして扱ってしまえばいいのでは?という話。

@yamat47
ソフトウェアエンジニアやったりマネージャーやったり。 @yamat47