前回は、リスクの受容について、学びました。
リスクを受容するのは、そうすることで、余裕を作り、様々な改善へリソースを割けることにつながるからです。
リスクを受容したことによる予算をエラーバジェットと呼び、それのメリットも学びました。
今回からリスクの線引き、つまりサービス目標に関する知識を学んでいきます。
まず、サービスレベルを定義する3つの言葉(SLI、SLO、SLA)について、説明します。
言葉の定義の意味を理解することで、概念的なサービスレベルに関する概念的な分類を行います。
SLI(サービスレベル指標:Service Level Indicators)
SLIは、サービスレベルの指標のことで、サービスレベルの性質を慎重に定義された計測量です。
重要なSLIとして、以下があります。
- リクエストのレイテンシ(リクエストに対するレスポンスを返すまでにかかった時間)
- システムのスループット(毎秒のリクエスト数)
- エラー率(受信したリクエストに対するエラーの比率)
- 可用性(サービスが利用できる時間の比率)
- イールド(処理に成功したリクエストの比率)
- 耐久性(長期にわたって、データが保存されている確率)
上記のようなシステム寄りの定義が、SLIの意味になります。
SLO(サービスレベル目標:Service Level Objective)
SLOは、SLIで計測でされるサービスレベルのターゲット値、あるいはターゲット値の範囲です。
すなわち、SLI <= ターゲット あるいは 下限 <= SLI <= 上限
がSLOになります。
SLOがユーザーに対して、明示されていない場合、ユーザーは、システムに関して、サービス運用側とは異なる考えを持つようになります。
そのため、システムを過剰に信頼したり、逆に実際以上に当てにならないものと考えるようになります。
SLOを設定し、それを公開することで、ユーザーがシステムに持つ隠れた不満をなくすことができます。
SLA(サービスレベルアグリーメント:Service Level Agreement)
ユーザーの間で結ぶ明示的あるいは暗黙の契約であり、SLOが満たせた場合、あるいは満たせなかった場合の規定が含まれます。
通常、SREはSLAの構築にはかかわりません。なぜなら、SLAがビジネスやプロタクトに密接にかかわるものだからです。SLAを持たない、明示していないサービスもありますが、これの有無にかかわらず、SLIとSLOを定義し、サービスを管理することは価値があります。
まとめ
- SLI、SLO、SLAは、サービス定義を行う為、またそれを説明するための概念
引用
- Betsy Seyerほか SRE サイトリライアビリティエンジニアリング オライリー 39-42