> [!abstract] 概要 > Chris Jones、[[John Wilkes]]、[[Niall Murphy]]、Cody Smith による章。SLI/SLO/SLA のフレームワークを定義し、サービス種別ごとの指標選定指針とエラーバジェットの運用を体系化する。 ## 書誌情報 - 書名: Site Reliability Engineering: How Google Runs Production Systems - 章: Chapter 4 — Service Level Objectives - 著者: Chris Jones, [[John Wilkes]], [[Niall Murphy]], Cody Smith - 出版: O'Reilly Media, 2016 年 4 月 ## SLI/SLO/SLA フレームワーク ### SLI(Service Level Indicator) SLI はサービスの振る舞いを定量的に計測する指標である。リクエストレイテンシ、エラー率、スループット、可用性などが典型例にあたる。SLI はサービスの健全性を直接的に反映する**計測値**であり、目標値ではない。 ### SLO(Service Level Objective) SLO は SLI の目標値あるいは許容範囲である。「SLI $\leq$ target」の形をとる。例: 「リクエストレイテンシの p99 が 200ms 以下」。SLO はサービスの信頼性に関する内部的な目標であり、外部への約束ではない。 ### SLA(Service Level Agreement) SLA は SLO に**違反時の罰則(consequences)**を付加した明示的な契約である。SLO が達成されなかった場合のクレジットバック、返金、その他のペナルティを含む。SLA は通常、外部顧客との間で締結される。 SLI → SLO → SLA は抽象度が上がる方向の階層をなし、SLI なしに SLO は定義できず、SLO なしに SLA は意味を持たない。 ## パーセンタイルの重視 レイテンシ指標を**平均値**で評価してはならない。平均はテールレイテンシ(遅い上位数%)の情報を潰す。少数のユーザーが極端に悪い体験をしている状況を平均は隠蔽する。 推奨される計測はパーセンタイルであり、特に以下が重視される。 - **p50(中央値)**: 典型的なユーザー体験 - **p99**: テールレイテンシの大部分 - **p99.9**: 最も影響を受けるユーザーの体験 ## サービス種別ごとの優先指標 | サービス種別 | 優先 SLI | |---|---| | ユーザー向けサービス | 可用性(availability)、レイテンシ(latency)、スループット | | ストレージシステム | 耐久性(durability)、可用性、レイテンシ | | ビッグデータパイプライン | スループット、エンドツーエンドレイテンシ | ストレージシステムでは、データの**耐久性**が最も根本的な指標である。データを失うことはサービス停止よりも深刻であり、回復不能となる場合がある。 ## エラーバジェットと停滞防止 [[エラーバジェット]]は SLO の副産物である。SLO が 99.9% であれば、四半期の 0.1% 分が「使える障害量」となる。このバジェットが存在しないと、以下の停滞が生じる。 - **SRE 側**: リスクのある変更を一切拒否する保守主義に陥る - **プロダクト側**: SRE の反対を回避するため、変更を隠蔽または小分けにする非生産的な行動を取る エラーバジェットは双方に「使ってよいリスク量」を明示し、定量的な意思決定を可能にする。バジェットが残っていればリリースを加速し、枯渇すれば信頼性改善に集中する——この動的な切り替えが停滞を防止する。 ## 位置づけ 本章で確立された SLI/SLO/SLA フレームワークは、後続の研究([[@2019__HotOS__Nines are Not Enough - Meaningful Metrics for Clouds|Nines are Not Enough]]、[[@2020__NSDI__Meaningful Availability|Meaningful Availability]])で有意義性・比例性・実用性の観点から精緻化されている。しかし基本構造——計測指標と目標値の分離、パーセンタイルの重視、エラーバジェットによるインセンティブ設計——は 10 年後の現在も変わらない。