Slide 1

Slide 1 text

エラーバジェット 枯渇の原因 - 偽陽性との戦い - SRE Kaigi 2025 LT 大会 - Tomonori Hayashi 1

Slide 2

Slide 2 text

Tomonori Hayashi ● NTT コミュニケーションズ ○ ノーコード AI ツール「Node-AI」の開発/運用 ○ ソフトウェアエンジニア ■ Front:TypeScript - React/Next.js ■ Infra:Google Cloud ● Google Cloud Partner Top Engineer 2024 - 2025 ● Google Cloud Partner Tech Blog Challenge 2024 個人カテゴリ 優秀ブログ ● Google Cloud All Certifications ● コミュニティ ○ Google Cloud 公式ユーザーコミュニティ「 Jagu’e’r」 ■ オブザーバビリティ分科会 運営 ■ エバンジェリスト 2 @pHaya72 @t_hayashi

Slide 3

Slide 3 text

エラーバジェットを導入してみて 経験した話です

Slide 4

Slide 4 text

改めて定義をおさらい 4 エラーバジェット とは “エラーバジェットは、 100% を信頼性の目標とすることは、基本的にいかな る場合にも間違って いるという所見から生じたもの です。 … 企業やプロダクトは、システムの可用性のターゲットをはっきりさせなければ なりません。そのターゲットがはっきりすれば、 エラーバジェットはその可用 性のターゲットを 1 から引いたもの になります。 … エラーバジェットの利用は、開発と SRE との間の動機付けの構造的な競合 を解決します。...SRE とプロダクト開発者は、 機能のリリース速度を最大化 するためにエラーバジェットを使うことを目標にします 。” — 書籍「サイトリライアビリティエンジニアリング」 1章 イントロダクション

Slide 5

Slide 5 text

エラーバジェット導入までの道のり 5 オブザーバビリティに本腰を入れて取り組み始める

Slide 6

Slide 6 text

エラーバジェット導入までの道のり 6 検証を経て仕組みの構築・ SLI/SLO の決定

Slide 7

Slide 7 text

エラーバジェット導入までの道のり 7 実際に運用することで味わう難しさ

Slide 8

Slide 8 text

偽陽性のエラーがはびこっていた 8 適切なエラーハンドリングの重要性 バーンレートアラートによって、 ある程度の頻度でサービス異常に気づきデバッ グする機会を得られるようになった 一方で、挙がったエラーが必ずしも「対応すべきサービス異常」であるかというと そうではなかった → 実装の中で「 適切でないエラーハンドリングにより 500 番台のステータス コードを挙げている 」部分が多々存在した 本来、エラーバジェットが削られるようなエラーではない( = 偽陽性のエラー ) にも関わらず、とりあえずのエラーハンドリングによりアラートが飛んでいる こ とがわかった

Slide 9

Slide 9 text

偽陽性のエラーがはびこっていた 9 適切なエラーハンドリングの重要性 バーンレートアラートによって、 ある程度の頻度でサービス異常に気づきデバッ グする機会を得られるようになった 一方で、挙がったエラーが必ずしも「対応すべきサービス異常」であるかというと そうではなかった → 実装の中で「 適切でないエラーハンドリングにより 500 番台のステータス コードを挙げている 」部分が多々存在した 本来、エラーバジェットが削られるようなエラーではない( = 偽陽性のエラー ) にも関わらず、とりあえずのエラーハンドリングによりアラートが飛んでいる こ とがわかった まずはこのエラーハンドリングから 継続的に見直していく必要がある

Slide 10

Slide 10 text

前述したエラーバジェットの利用まだ先 10 サービス異常を検知するために 元々解決したい課題感としては、「サービスの異常を発見できない」「異常が発見で きても迅速にデバックできない」というものだった 特に前者を解決するために「 何かしらの基準でアラートを仕掛けたい 」というモチ ベーションがあった 今回は「設定した時間内にエラーバジェットを枯渇する速度 」=「バーンレートア ラート 」を採用して「サービスの異常を発見できない」課題にアプローチ ● リクエストの総数に対して、 200~400 番台のリクエストを成功 ● リクエストが偽陽性を含む 500 番台をあげる たびにアラートしていてはオ オカミ少年になりかねない → サービス異常を緩く検知する意図でバーンレートアラートを利用

Slide 11

Slide 11 text

前述したエラーバジェットの利用まだ先 11 サービス異常を検知するために 元々解決したい課題感としては、「サービスの異常を発見できない」「異常が発見で きても迅速にデバックできない」というものだった 特に前者を解決するために「 何かしらの基準でアラートを仕掛けたい 」というモチ ベーションがあった 今回は「設定した時間内にエラーバジェットを枯渇する速度 」=「バーンレートア ラート 」を採用して「サービスの異常を発見できない」課題にアプローチ ● リクエストの総数に対して、 200~400 番台のリクエストを成功 ● リクエストが偽陽性を含む 500 番台をあげる たびにアラートしていてはオ オカミ少年になりかねない → サービス異常を緩く検知する意図でバーンレートアラートを利用 リリース速度を最大化するような エラーバジェットの利用はまだまだ先になりそう

Slide 12

Slide 12 text

エラーバジェットを導入しみて初めてわかる難しさ ● 適切なエラーハンドリングができていないことで不要な 500 番台のステータスコードが挙がっていた → エラーバジェットを枯渇させる原因となっていて、本来の使い方までの道のりはまだまだ 今回の取り組みを通しての学び ● サービスがこのような現状であることは、今回の取り組みがなければ気づくことができなかった → まずは流行ってみる精神で 信頼性も含めたソフトウェア品質を向上するきっかけを得ることができた まとめと学び

Slide 13

Slide 13 text

CREDITS: This presentation template was created by Slidesgo, and includes icons by Flaticon, and infographics & images by Freepik Thanks! 13 @pHaya72 @t_hayashi