SRE, SLIs, SLOs, SLAs?

MLOps tutorial 1/N

公開日: 2023-06-01
更新日: 2023-10-08

  Table of Contents

SREはどのような問題を解決するために登場したコンセプトか?

サービス開発&運用において,

  • Agility: adding new features, fixing bugs, etc
  • Stability: サービスの安定稼働

のトレードオフは頻繁に発生します. このトレードオフに関するguiding principlesなるものとしてSRE という概念が生まれました.

Def: SRE(Site Reliability Engineering)

SREとは下記の項目について開発者から運用者まで組織横断的にコミュニケーションすることで, 理想的な DevOpsを実現しようとするアプローチのこと:

  • Availabilityの定義
  • 適切なAvailability Levelの定義
  • インシデント発生時のプラン

SREを具体的に実行するためには, Product Ownerと協力して

  • Servuce Level Indicators: なにを見るべきか
  • Service Level Objectives: 指標の目標値

を事前に定義することが必要です. ただし, 指標を具体的に定義する前に忘れてならないのが そもそもAvailabilityとはなにかを合意することです.

1
2
First, you really have to define what availability is in addition to
defining how available you want to be.

基本的にAvailabilityは, システムがある時点で目的の機能を実行できるかどうかという観点で定義されます.

SLI: Service Level Indicators

Def: Service Level Indicators

SLIは経時的に観察される指標のことで, その目的はサービスの品質を測るところにあります. 良いSLIの性質として,

  • 顧客が幸せになったら, 上昇する指標
  • 顧客が不幸せになったら, 下降する指標
  • 通常時と異常時の違いが現れる指標
  • 分散が小さい指標(疑似相関がない指標など)

SLIの例として,

  • Request latency
  • Batch throughput
  • Failures per request
  • Support center complaints

一般的には割合を用いた指標を用いることが多く

\[SLI = \frac{\text{良いイベント}}{\text{有効イベント}} \times 100 \text{ \%}\]

という形で定義されます.

Availability Table

Availability downtime per day downtime per week downtime per month downtime per year
99% 14.40 min 1.68 hours 7.31 hours 3.65 days
99.9% 1.44 min 10.08 min 43.83 min 8.77 hours
99.99% 8.64 sec 1.01 min 4.38 min 52.60 min
99.999% 864.0 ms 6.05 sec 26.30 sec 5.26 min

SLO: Service Level Objectives

Def: Service Level Objivetics

SLOとは, 経時的なSystem/Service Availabilityを測るSLIの上限/下限閾値数値のこと.

AvailabilityはSLIのupper/lower boundとして定義されるもので, 調整余白がないと 開発スピードの向上とシステム安定性のトレードオフ問題が解決できなくなる点を水準設定にあたって留意する必要がある.

100% AvailabilityとSLOの水準との差をエラーバジェットと呼びます. システムの設計やアーキテクチャの変更が必要かどうかについて検討する際には,

  • システムがこの SLO を引き続き満たすか?
  • エラーバジェットの範囲内に収まりそうか?

という観点から考慮する必要があります.

SLAとの違い

SLAはユーザーに約束するService/System Availabilityのことで, 契約書面に現れるものです. これを怠った場合は, 契約文面に従ってなんらかのペナルティが課せられる特徴があります.

一方, SLOはDevOpsを円滑に進めるために設定する基準であり, 同じ目標数値であっても使用される文脈が異なります. 一般的には, 1 か月間の SLA が 99.9% に対して、内部の SLO は 99.95%のように, SLA基準は内部のSLO よりも緩いケースが多いです.

References



Share Buttons
Share on:

Feature Tags
Leave a Comment
(注意:GitHub Accountが必要となります)