Site Reliability Engineering #4
4章サービスレベル目標
ユーザに対するサービスレベルを定義する。 定義するものはサービスレベル目標(SLI)、サービスレベル目標(SLO)、サービスレベルアグリメーメント(SLA)になる。
4.1 サービスレベルに関する用語
- SLI
SLO
- SLIで計測されるサービスレベルのターゲット、または範囲を指す
- ターゲットの場合は の関係が成り立つ状態を目指す
- 範囲の場合は の関係が成り立つ状態を目指す
- ユーザの動向によって決まるメトリクス(ex. QPS)をSLOにすることは現実的ではない
-
- ユーザとの間で結ぶ契約のこと
- SLOを満たした場合/満たさなかった場合の規定を含む
- 「SLOを満たさなかったときにはどうなるのか?」から分かる
SLOにはユーザの関心事を反映させ公表して期待を設定する。 期待を設定することでユーザのサービスに対する独自の期待や過剰な信頼を取り除くことができる。
4.2 指標の実際
提供するサービスの性質によってSLIを選択する。
指標の収集結果を分布で捉えると、スパイクといった5%が全体の95%に影響を与える動作を見つけられる。 収集結果を算術平均で捉えると埋もれてしまう。
4.3 目標の実際
サービスの性質によって決まり、パーセンタイルを活用する。
パフォーマンスカーブが重要な場合
- Get RPC呼び出しの90%が1m以下で完了すること
- Get RPC呼び出しの99%が10m以下で完了すること
- Get RPC呼び出しの99.9%が100m以下で完了すること
スループット、レイテンシそれぞれが気なるユーザがいる場合
SLOを常に満たし続けるのはデプロイ頻度の低下を招き、高価で過剰に保守的なソリューションが必要になることに繋がる。
SLOは経営に関わる次の制約の中で満たす必要があり、議論する必要がある。
- スタッフ、市場投入までの期間、利用できるハードウェア、資金
現実的な期待をユーザのために設定するには安全マージンを確保する、過剰達成を避けて計画的なサービス停止を導入するなどができる。
4.4 アグリーメントの実際
SLAはビジネス、法務のチームが規定やペナルティを選択できるようにする。 顧客の属性が幅広いほどSLAの変更削除が難しくなるため、開示する内容は控えめにする。