Skip to content
Latchkey

エラーバジェットとは?解説

エラーバジェットとは、信頼性向上の作業を優先すべきになるまでにシステムが許容される失敗の量であり、サービスレベル目標の実用的な補完概念です。

完璧な信頼性は達成できず、そのコストに見合うものでもありません。SREの中核となる考え方であるエラーバジェットは、このトレードオフを明示的にします。目標とする信頼性にコミットし、残りの不安定性は消費できるバジェットであると受け入れ、それを使い果たしたときに行動を変えるのです。

バジェット = 100%から目標を引いた値

サービスレベル目標が99.9%の成功率であれば、エラーバジェットは残りの0.1%、つまりウィンドウ内で許容される失敗の割合です。バジェット内にいる限り、それを機能のリリースに使えます。使い果たしたときは、ポリシーに従って手を止め、信頼性に投資します。

なぜ存在するのか

エラーバジェットは、素早く動くことと信頼性を保つことの間の永遠の緊張を、議論ではなく合意された数値によって解決します。バジェット内なら大胆にリリースし、バジェットを超えたらペースを落として堅牢化する。価値観の議論をデータドリブンな意思決定に変えるのです。

CIへの適用

CIの信頼性も同じように捉えられます。pipelineが信頼できる結果を返す頻度の目標を定め、残りをflakinessのバジェットとするのです。一時的でflakyな失敗がバジェットを食い潰すとき、それはより多くの機能ではなく、決定性・インフラ・retryへ投資すべきというシグナルです。

賢く消費する

すべてのバジェット消費が同じ価値というわけではありません。本物のバグを検出したのはバジェットが意図どおりに機能した結果ですが、一時的なインフラ障害によるバジェット消費は無駄です。両者を切り分けることで、バジェットを品質向上の作業に使うべきか、信頼性と自動化に使うべきかが分かります。

Latchkeyの視点

Latchkeyの自己修復型マネージドrunnerは、CI信頼性バジェットの無駄になる部分を守ります。一時的で機械的な失敗を自動的にretryし、一度きりの不具合がbuildを失敗させないようにすることで、本来は本物の作業に使われるべきバジェットを環境ノイズが消費するのを防ぎます。

重要なポイント

  • エラーバジェットとは、信頼性向上の作業が優先されるまでに許容される不安定性です。
  • これは、あるウィンドウにおける信頼性目標を100%から引いた値です。
  • スピードと信頼性のトレードオフを一つの数値に変えます。
  • 本物の消費と一時的な消費を切り分けることで、どこに投資すべきかが分かります。

関連ガイド