# Chapter 2 Implementing SLOs
> [!abstract] 概要
> [[Steven Thurgood]] と [[David Ferguson]] による第 2 章([[Alex Hidalgo]]、[[Betsy Beyer]] 協力)。[[SRE Book]] 第 4 章が定義した [[サービスレベル目標]] を、実際に導入・測定・合意・改善・意思決定へ使うための手順として展開する。SLO は信頼性作業の機会費用を判断する中核であり、SLO 遵守が単なる KPI ではなく、[[エラーバジェット]]ポリシーと結びついた行動の道具になることを要求する。
## 書誌情報
- 書名: The Site Reliability Workbook
- 章: Chapter 2 — Implementing SLOs
- 著者: [[Steven Thurgood]], [[David Ferguson]], with [[Alex Hidalgo]] and [[Betsy Beyer]]
- 出版: O'Reilly Media / Google, 2018 年
- URL: https://sre.google/workbook/implementing-slos/
## 主要主張
- SLO は SRE 実践の中核である。短期的には SLO を守り、中長期的には SLO を維持可能にすることが SRE の日々の仕事とプロジェクトを駆動する。
- エラーバジェットベースの SRE を採用するには、全ステークホルダーが承認した SLO、通常時に守れるという運用側の合意、意思決定へ使う組織的コミットメント、SLO 改善プロセスが必要である。
- 100% 信頼性は誤った目標である。顧客側の依存関係も含めると 100% 体験は不可能であり、100% 目標は変更を止め、運用チームを常時リアクティブにする。
- SLI は「良いイベント数 / 全イベント数」の比率として設計すると、0% は何も動かない、100% は何も壊れていないという直感的な尺度になり、SLO とエラーバジェットに接続しやすい。
- SLI は、ユーザーにとって意味のある評価である SLI 仕様と、それをどこでどう測るかという SLI 実装に分けて考える。サーバログ、ロードバランサ監視、ブラックボックス監視、クライアント側計装には品質・カバレッジ・コストのトレードオフがある。
- 初期 SLO は正しくなくてよい。安価に測れる指標から始め、ユーザー満足・既知障害・サポートチケット・エラーバジェット損失との相関で継続改善する。
- SLO はエラーバジェットポリシー、SLO 文書、ダッシュボード、アラートと結びついて初めて、単なる報告指標ではなく意思決定の道具になる。
## 手順の骨格
1. 対象アプリケーションを 1 つ選ぶ。
2. 最適化する「ユーザー」を明確にする。
3. ユーザーの代表的なタスクとクリティカルな活動を列挙する。
4. 高レベルのアーキテクチャ図で、リクエストフロー・データフロー・重要依存関係を整理する。
5. サービスをリクエスト駆動、パイプライン、ストレージに分類し、可用性・レイテンシ・品質・鮮度・正確性・カバレッジ・耐久性などから少数の SLI を選ぶ。
6. SLI 仕様を、現時点で最小のエンジニアリング作業で測れる SLI 実装へ落とす。
7. 4 週間ローリングウィンドウ、週次要約、四半期要約など、意思決定の時間粒度に合う評価窓を選ぶ。
8. プロダクトマネージャ、開発チーム、SRE/運用担当の合意を得る。
9. エラーバジェットポリシーを文書化し、予算枯渇時の行動・所有者・エスカレーション経路を決める。
10. サポートチケット・既知障害・ユーザー満足と SLI/SLO の相関を確認し、偽陽性・偽陰性を見ながら SLO または SLI 実装を改善する。
## 例と設計パターン
- リクエスト駆動サービス: 成功応答率、閾値以下レイテンシ、劣化なし応答の割合。
- パイプライン: データ鮮度、正確性、カバレッジ。
- ストレージ: 書き込んだレコードが読み出せる割合としての耐久性。ただしユーザーが必要とするデータ部分を捉えない耐久性 SLI は誤解を招く。
- レイテンシ SLO は単一閾値でなく、90% が 100ms 未満、99% が 400ms 未満のように複数グレードを持つと、典型体験とテール体験の両方を捉えられる。
- 重要ユーザージャーニーは、既存ログと直接対応しないことが多いが、ユーザー中心 SLO を設計するうえで必要である。
- 依存コンポーネントの可用性を単純な確率計算で合成してはならない。共通依存、共通障害ドメイン、共有運命、グローバルコントロールプレーンが独立性を壊す。
## 既存 SRE Book との関係
本章は [[@2016__OReilly__SRE Book - Chapter 4 Service Level Objectives]] の実装補完である。SRE Book は SLI/SLO/SLA の定義とサービス種別ごとの指標選定を提示した。本章はそれを、導入前の成熟度、最初の SLI 仕様、測定実装、ステークホルダー合意、エラーバジェットポリシー、継続改善、意思決定マトリクスへ具体化する。[[サービスレベル目標]] の concept ページでは、これを「測定論」から「運用意思決定システム」への拡張として扱うとよい。
## 抽出した概念候補
- SLO 実装
- SLI 仕様と SLI 実装
- エラーバジェットポリシー
- ユーザー中心 SLO
- 重要ユーザージャーニー
- 4 週間ローリングウィンドウ
- SLO 意思決定マトリクス
- 依存関係と共有運命
- 志向 SLO
## 抽出した実体候補
- [[Steven Thurgood]]
- [[David Ferguson]]
- [[Alex Hidalgo]]
- [[Betsy Beyer]]
- [[Prometheus]]
- [[SRE Workbook]]
- [[Google]]
## 統合メモ
- [[サービスレベル目標]] に、SLI 仕様/実装の分離、良いイベント/全イベントの比率、初期 SLO の反復改善、4 週間ローリングウィンドウを追加できる。
- [[エラーバジェット]] に、予算消費率を使って信頼性プロジェクトの優先順位を比較する考え方と、ポリシー文書の必須項目を追加できる。
- [[テレメトリ]] に、サーバログ・ロードバランサ・ブラックボックス・クライアント計装の品質/カバレッジ/コストのトレードオフとして接続できる。
- [[ソフトウェア変更管理]] に、予算枯渇時の変更凍結と、悪いリリース対データベース障害の予算消費比較を追加できる。
## 出典
- https://sre.google/workbook/implementing-slos/