## 定義
SLO目標値の選定とは、SLI(サービスレベル指標)が満たすべき具体的なパーセンテージやしきい値を、どのような根拠で決めるかという方法論である。[[Alex Hidalgo]] は『SLO サービスレベル目標』4章で、この選定を単なる「9の数」の選択ではなく、(1) ユーザーの満足という基準の明確化、(2) サービスの依存対象・コンポーネント構成の考慮、(3) 過去のパフォーマンスデータの統計的分析、という3つの観点を組み合わせる作業として提示する。目標値は正式な契約(SLA)ではなく、必要に応じて変更してよい暫定的な目標として扱われる (Source: [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 4 適切なサービスレベル目標の選択]])。
選定の出発点となる制約は主に2つある。第一に、目標値を「9の数」(99.9%等)の並びだけで決めることへの批判——97.2%のような非九構成の値も、サービスの要件を正しく反映するなら正当である。第二に、サービスは強い依存対象より高い信頼性を約束できないという制約——複数コンポーネントの信頼性目標値を単純乗算すると(例: 0.999^40 ≒ 0.9608)、サービス全体の信頼性上限は個々のコンポーネントの目標値より低くなる (Source: [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 4 適切なサービスレベル目標の選択]])。
過去のパフォーマンスデータがある場合は、min・max・mean・median・modeという基本統計量とパーセンタイル(P50・P90・P95・P99等)を計算し、それを初期目標値の根拠とするのが最善のアプローチとされる。レイテンシーのような歪んだ分布には、P95/P98/P99のように複数段のパーセンタイル閾値を組み合わせることで、ロングテイルを監視しつつデータを無駄にしない目標値設定ができる。過去データが全くない新規サービスでは、依存対象の確立されたSLOを手がかりにした「経験と知識に基づく推測」で初期値を設定し、後で改訂する (Source: [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 4 適切なサービスレベル目標の選択]])。
## 横断的知見
- **目標値選定には「データ駆動(統計的観察)」と「ユーザー痛みしきい値ベース」という独立した2つのアプローチが存在し、相互補完的である**: Hidalgo(本書4章)は過去のSLIデータのmin/max/mean/median/mode・パーセンタイルを計算し、それを初期SLOの目標値として直接採用する統計主導のアプローチを示す。一方Gangatirkar(SREcon18 Asia)はユーザー幸福度のS字曲線から痛みのしきい値を特定し、SLOをその下に設定する行動観察主導のアプローチを示し、Stanke(SREcon20 Americas)はその結果をSLO PolicyのRationaleフィールドとして文書化する具体形を示した。前者は「今のパフォーマンスから妥当な目標を逆算する」、後者は「ユーザーが許容できる限界から目標を設定する」という異なる出発点を持ち、両者を突き合わせることで選定した目標値の妥当性を二重に検証できる (Source: [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 4 適切なサービスレベル目標の選択]], [[@2018__SREcon18Asia__Quantifying Empathy Through Service Level Objectives]], [[@2020__SREcon20Americas__Squish Level Objectives]])。
- **依存対象のSLO変化に応じて自サービスの目標値を再計算する運用は、4章の静的な合成信頼性計算(単純乗算)を時間軸上の継続的なメンテナンス作業として具体化する**: 4章は依存対象を強い依存対象とみなし、複数コンポーネントの目標値を単純乗算して合成信頼性の上限を求める静的な計算式を示す(0.999^40 ≒ 0.9608等)。14章はこれを時間経過の観点から補い、依存対象やプラットフォームのSLOが変更されるたびに(例: 99.99%→99.98%)、自サービスの合成信頼性の上限も変わるため、依存対象のSLO変更を契機として自らの目標値を再検討しなければならないと論じる。これは本ページ既出の「SLO Algebraは未解決」という問いに、少なくとも「いつ再計算すべきか」という時間軸のトリガーを与える (Source: [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 4 適切なサービスレベル目標の選択]], [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 14 SLOの進化]])。
- **2章の「9を1段階上げるごとにコストが加速度的に増える」という定量計算は、4章の「9の数だけで目標値を決めるな」という批判の前提条件を数値で裏付ける**: 2章 §2.3.2 は 99.90%→99.95% の移行(不信頼度が半分になる、変更係数2)と 99.95%→99.99% の移行(不信頼度が5分の1になる、変更係数5)を比較し、隣接する目標値への移行が直感に反して等間隔ではなく、後者が前者の2.5倍のコスト増を要求することを示す。4章の「9の数の並びだけで目標値を選ぶことへの批判」(97.2%のような非九構成の値も正当でありうるという主張)は、この非線形なコスト構造を前提にして初めて根拠を持つ——9を増やすこと自体が目的化すると、リソース消費が加速度的に増大するにもかかわらずユーザー体験の改善は比例しないためである。2章は「なぜ9を増やすことにコストがかかるか」の定量的根拠を、4章は「だから9の数だけで選ぶな」という規範的帰結を担い、両者は同じ主張を異なる章で補完している (Source: [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 2 信頼性についての考え方]], [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 4 適切なサービスレベル目標の選択]])。
- **第6章のヘルスケア業界の事例は、4章の「9の数だけで目標値を決めるな」という批判が扱わない、もう一つの単純化の罠——CUJを無視した単一SLOへの統合——を具体例で示す**: 4章は「97.2%のような非九構成の値も正当でありうる」という形で、目標値を機械的に「9の数」で選ぶことへの批判を扱うが、これは値そのものの選び方への注意であり、SLOの対象範囲(何に対して1つのSLOを設定するか)は論じない。第6章のJoseph Bironasは、ある企業の経営陣がエラーバジェットを劇的にシンプルにするため、クリティカルユーザージャーニー(CUJ)ごとに適したSLOを選ぶ代わりに、ステートフル/ステートレス、バッチ/リアルタイムを問わずすべてに対して単一のSLO(可用性99.95%)を宣言した事例を紹介する。目標はわかりやすかったが、エンジニアリングチーム全体のSLOの概念そのものを麻痺させ、結局役に立たず手法への信頼も損なわれた。これは、値の粒度(9の数)を正しく選んでも、対象の粒度(CUJごとか全体か)を誤れば同じ「単純化のしすぎ」に陥ることを示し、SLO目標値の選定には「値」と「対象範囲」という独立した2つの単純化リスクがあることを明らかにする。ただし同じ事例は、不完全なSLOでも「今まで測っていなかったものを測るようになった」こと自体に価値があったとも総括しており、失敗した単純化が全否定されるわけではない両義的な結末を持つ。(Source: [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 4 適切なサービスレベル目標の選択]], [[@2022__OReillyJapan__SREエンタープライズロードマップ - Chapter 6 Googleを超えて]])
- **「パーセンタイルを起点に選ぶ」という4章の統計的アプローチそのものを、Schlossnagle(『SREの探求』21章)は逆転させ、目標値の妥当性を検証する具体的な手続きを与える**: 4章はP50・P90・P95・P99等のパーセンタイルを過去データから計算し、それを初期目標値の根拠として採用することを推奨する。これは「まず分位数 q(0.99) を計測し、それをそのままSLOの根拠にする」という向きの手続きである。Schlossnagle は同じ統計的道具立て(PDF・CDF・分位関数)を使いながら、逆向きの手続きを提案する——ビジネス上意味のある性能値(例: 5ms)を先に決め、その値を下回る利用者の割合を表す逆分位数 q^-1(5ms) を分析する。両者を組み合わせると、4章の「過去データからP95/P98/P99を計算して目標値とする」手続きで得た値を、Schlossnagle の逆分位数分析で「その値が実際に利用者の何%をカバーしているか」と事後検証できる。これは、本ページ既出の「データ駆動」と「ユーザー痛みしきい値ベース」という2つのアプローチ(Hidalgo対Gangatirkar)に、統計的道具そのものを使った第3の検証手段——同じヒストグラムデータに対して分位数と逆分位数の両方向から問い合わせる——を追加する (Source: [[@2021__OReillyJapan__SREの探求 - Chapter 21 サービスレベル目標の技法と科学]] §21.6, [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 4 適切なサービスレベル目標の選択]])。
- **4章の「min・max・mean・median・modeという基本統計量」の推奨は、Schlossnagle が明示的に警告する「単純な統計量では貧弱な理解しか得られない」という限界の射程内にある**: 4章は基本統計量とパーセンタイルの計算を「初期目標値の根拠とする最善のアプローチ」として推奨するが、Schlossnagle(21章)はヒストグラムの実例(モード・複数の挙動の重なり・ロングテール)を示したうえで、「最小値、最大値、中央値、平均値といった単純な統計方法で集計しても、元のデータに対する理解は貧弱なものにしかならない」と明言する。これは4章の推奨を否定するものではなく、範囲を限定する——基本統計量とパーセンタイルは初期目標値の「出発点」としては有効だが、目標値がなぜ妥当か(ロングテールの形状・複数モードの存在)を説明するには、分布全体(ヒストグラム)への問い合わせが別途必要になる。4章がP95/P98/P99のような多段パーセンタイルでロングテールの監視を勧める記述は、この限界に対する部分的な対処と読める (Source: [[@2021__OReillyJapan__SREの探求 - Chapter 21 サービスレベル目標の技法と科学]] §21.4, [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 4 適切なサービスレベル目標の選択]])。
## 未解決の問い
- CUJごとのSLO分割と単一SLOへの統合は、どの程度の組織規模・複雑さでトレードオフが逆転するか。第6章の事例は「単一SLOは機能しなかった」と報告するが、SLOの数を絞ることが有効な下限と、4章自身が警告する「SLOが多すぎる問題」を招く上限との間の適正な分割単位は、本 concept の現ソース群では特定できない。
- 依存対象の合成信頼性計算(0.999^40 の単純乗算)は本書自身が「過度に単純化」と認めている。並列構成・フェイルオーバー・共有障害(shared fate)を持つ依存関係では、この計算はどう修正すべきか([[サービスレベル目標]] の「SLO Algebraは未解決」という知見と同型の問い)。
- パーセンタイル閾値を多段(P95/P98/P99等)で設定すると目標値の実質的な数が増える。これは4章自身が警告する「SLOが多すぎる問題」(意思決定の困難化・多重検定問題)とどう折り合いをつけるべきか。
- 履歴データがない新規サービスでの「経験と知識に基づく推測」は主観的判断に大きく依存する。この推測を、属人性を減らした体系的な手続きにどこまで落とし込めるか。
- Schlossnagle(21章)の逆分位数分析 q^-1(閾値) は、目標値が「妥当な範囲か」を事後検証する手続きを与えるが、その検証結果(例: 実測99.4597%が目標99%を上回っていた)を受けて目標値そのものをどう改訂すべきかの基準は示していない。4章の「9の数だけで決めるな」という批判・14章の「依存対象のSLO変化を契機に再検討する」というトリガーと、逆分位数による事後検証はどう接続すべきか。
## 関連
- ソース: [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 4 適切なサービスレベル目標の選択]] / [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 2 信頼性についての考え方]] / [[@2021__OReillyJapan__SREの探求 - Chapter 21 サービスレベル目標の技法と科学]]
- 実体: [[Alex Hidalgo]] / [[Theo Schlossnagle]]
- 概念: [[サービスレベル目標]](SLI/SLO/SLAの一般的定義) / [[信頼性スタック]](SLI→SLO→エラーバジェットの三層モデル) / [[エラーバジェット]](目標値からエラーバジェットへの変換) / [[ヒストグラムメトリクス]](分位数・逆分位数を計算するためのデータ構造)
- ソース: [[@2022__OReillyJapan__SREエンタープライズロードマップ - Chapter 6 Googleを超えて]] — CUJを無視した単一SLOへの統合が招いた形骸化の事例
- エンティティ: [[Joseph Bironas]]
- 関連 MOC: [[structures/SRE - MOC]]
## 出典
- [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 4 適切なサービスレベル目標の選択]](9の数批判、依存対象の合成信頼性計算、統計基礎、パーセンタイル閾値、過去データからの導出、履歴がない場合の対処)
- [[@2018__SREcon18Asia__Quantifying Empathy Through Service Level Objectives]](S字曲線によるユーザー痛みしきい値の特定)
- [[@2020__SREcon20Americas__Squish Level Objectives]](SLO PolicyのRationaleフィールドによる目標値根拠の文書化)
- [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 14 SLOの進化]](依存対象・プラットフォームのSLO変化に応じた目標値再検討、利用率変化と目標値の厳密化・緩和)
- [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 2 信頼性についての考え方]](99.90%→99.95%→99.99%の変更係数比較による非線形コストの定量的根拠)
- James Brookbank, Steve McGhee 著, 山口 能迪 訳, 『SREエンタープライズロードマップ』, Google Japan G.K., 2022, 第 6 章.
- [[@2021__OReillyJapan__SREの探求 - Chapter 21 サービスレベル目標の技法と科学]](§21.4-21.6: ヒストグラムによる分布分析の限界と逆分位数 q^-1 によるSLO妥当性の事後検証)