インシデント後のポストモーテムを実施するとき、再発防止策まで考えて満足するのは危険。「その対策を講じていたら本当に発生しなかったのか?」「その対策を当時講じなかったのはなぜか?」の二点をさらに考えることで、より実効性の高い内容になっていく。
「再発防止策」と「仕事の質の向上策」とは異なる。前者と思って提案した様々なものが実は後者だった、みたいなことがしばしばある。再発を防止したい場面なら「本当にこれで発生を防止できたのか?」を当時の状況に照らして具体的に論じることが大切。
例えばスロークエリによってサーバー負荷を高めてしまったケースに対して。「検証環境で事前に API コールをして証跡を残す」みたいなことをしようとしても、検証環境のデータサイズや DB の設定だとそもそも再現しない場合がある。これは再発防止策とは言えない(だって防げないから)。
また、せっかくいい再発防止策を提案できたとしても毎回実行しないと意味がない。「仮に当時に戻ったとして、本当にこの策を実行したか?」という実効性の部分でのレビューも重要。一年後とか二年後、今回のインシデントのことを忘れていたとしても?新入社員だとしても?
だからこそ「毎回動作確認を徹底する」みたいな精神論ソリューションはとても危うい。人は誰しも易きに流れるし、組織がスケールしたときにそれを徹底させる難度は一気に高まる。エンジニアの三大美徳よろしく、そもそも課題を発生させないような仕組みづくりができるとよい。
えてしてポストモーテムは行うことが目的化しやすい。やらないよりはやった方がいいかもしれないが、意味のある時間にできるようにこうしたことを意識してもらいたいな、と最近伝えたメモ。