🚀 ニフティ’s Notion

ポストモーテムの文化

失敗からの学び

  • 常にサービスを拡張し続け、新しいシステムを追加し続ける中で、インシデントやサービス障害が起きることは避け難いことである
  • ただしインシデントが起きた場合に、学びを得るために定式化されたプロセスがなければ、そういったインシデントは無限に繰り返されることになる
  • そこでインシデントが起きた場合に、インシデントとそのインパクト、その解消のために行われたアクション、根本原因、フォローアップアクションを記録するために「ポストモーテム」という文書をSREでは作成する

ポストモーテムの哲学

非難を避け、建設的であり続けること
  • 悪い行動や不適切な行動をもって、特定の個人やチームを糾弾することなく、インシデントに影響を及ぼした原因を特定することに集中しなければならない
  • インシデントに関わりを持った全ての人の人々が善意のもとで、知り得た情報をもって正しい行動をとったものと考えるべき
  • 個人やチームの「間違った」行いに対する指弾と不名誉の文化が広がってしまうと、人々は処罰を恐れて問題を公表しようとしなくなる
    • たとえある人物やチームが頻繁にポストモーテムを作成しているとしても、そこにネガティブな烙印を押してはならない
  • 非難的な雰囲気はインシデントや問題を隠蔽する文化を醸成する危険性をはらんでおり、組織にとってのより大きなリスクにつながる
コラボレーションと知識の共有
  • ポストモーテムは正式なレビューと公表まで含めた一連の文書である
  • レビューされていないポストモーテムは存在しなかったも同然であり、透明性の高い共有をする必要がある
  • 他者がそのポストモーテムを見つけ、そこから学ぶことまで容易にしなければならない

実際にポストモーテムを書く

  • 以下に実際のポストモーテムを記載する
  • 形に決まりはないが、形式に沿って書くと誰が見てもわかりやすいポストモーテムとなるはずである
良いポストモーテムの条件
明確さ
  • 用語集
    • よく書かれた用語集は幅広い読者にとって、ポストモーテムを利用しやすくかつ理解しやすいものにしてくれる
  • アクションアイテム
    • アクションアイテムごとにテーマを設定し、グループ化することで、担当者と優先度の割り当てを容易にしている
  • 数量化できるメトリクス
    • このポストモーテムはインシデントについての有益な具体的なデータを提示しています。データに関する透明性は曖昧さを廃し、読者が文脈を理解しやすくする
具体的なアクションアイテム
  • ポストモーテムは次に行うべきアクションアイテムが設定されることで効果をもたらす
  • 計測可能性
    • アクションアイテムに検証可能な終了状態があり、それによってどこまで完了したかが明確になっている(たとえば「X%以上のマシンが失われた場合のアラートを追加する」など)
  • 予防的なアクション
    • それぞれのテーマに対して、障害の再発を避けるのに役立つ予防/緩和アクションアイテムがある(たとえば「いかなる操作も名前空間/クラスの境界をまたぐサーバー群に影響を及ぼせないようにする」)
    • 言い換えると、「人間が頑張る」ではなく「どうやっても失敗できない状態をもたらす方法」を考えられているかどうか
非難がない
  • うまくいかなかったこと
    • このインシデントに関していかなる個人やチームも非難されていない
  • 根本原因とトリガー
    • 「誰が」インシデントを起こしたかではなく、「何が」うまくいかなかったのかに焦点をあてている
  • アクションアイテム
    • 人の改善ではなくシステムの改善を目標としている
深さ
  • インパクト
    • このセクションは様々な観点からの詳細事項が多く含まれており、バランスが取れた客観的なものになっている
  • 根本原因とトリガー
    • このセクションはインシデントについて深く掘り下げており、根本原因とトリガーに行きついている
  • データ駆動の結論
    • 提示された全ての結論は、事実とデータに基づいている
    • 結論にいたるまでに使われたすべてのデータへのリンクが貼られている
  • 追加のリソース
    • ここではグラフ形式でさらなる有益な情報が提示されている
    • グラフにはシステムに馴染みがない読者に文脈を与えるための説明がある
即時性
  • このポストモーテムは、インシデントがクローズされてから1週間以内に配布された
  • 即時性のあるポストモーテムは寄稿者の記憶が新鮮であることから、より正確になる傾向がある
  • 障害で影響を受けた人たちは、説明を待っており、この待ち時間が長引くほど混乱を生むことになる
    • そしてこれが望ましい方向に動くことはほとんどない
簡潔さ
  • このドキュメントはチャットの記録やシステムログなどの冗長なデータソースは要約されて構成されている
  • 大量のデータが記載された未編集バージョンはメインのドキュメントからリンクされている
  • これによってこのポストモーテムは詳細度と読みやすさのバランスをうまく両立させている

まとめ

  • 常に新しい機能を開発し続ける中でインシデントやサービス障害は避け難い事象である
  • しかし、その失敗から学ぶプロセスがなければ同じ失敗が繰り返されてしまうため、SREではポストモーテムという文書を作成し公開するまでの一連の作業を行うことで、失敗からの学びを得る
  • 良いポストモーテムとは、明確であり、非難がなく、深さと簡潔さを兼ね備えており、具体的なアクションアイテムが設定されていて、障害後なるべく短時間で公開されることが望ましい。