SLI・SLO・SLAについて

アプリケーション

SLI・SLO・SLAについて

SLI・SLO・SLAについて色々調べてみたことをまとめる。

SLO・SLI・SLAとは何か

SLO、SLI、SLAとは、サービスレベル(Service Level)に関わる指標、目標、合意のことである。 サービスレベルとは一定の期間内で提供されたサービスを特定の方法で測定して表したものである。

  • SLI(Service Level Indicator)
    • サービスレベル指標
      • サービスレベルを測定するための指標、メトリクス
      • ex. 可用性、レイテンシー、エラー率、スループット
  • SLO(Serivce Level Objective)
    • サービスレベル目標
      • サービスレベルの目標とする定量または定性的な値
      • 外部依存を考慮する
        • 外部サービスとの通信部分、マネージドサービスのSLOなど外部連携している部分など
  • SLA(Service Level Agreement)
    • サービスレベル合意
      • サービスの提供者と利用者の間で結ばれるサービスレベルに関する合意や保証のこと
      • SLOより緩めの目標値としたほうが良い

SLI・SLOの設定方法

NewRelicが提唱しているベストプラクティスが取り組みやすくて良いと思う。

newrelic.com - モダンなシステムにSLI/SLOを設定するときのベストプラクティス

システム境界を定義、境界ごとの機能定義、機能ごとの可用性の定義、可用性計測のためのSLI定義といった感じでSLI・SLOを策定する方法が紹介されている。

SLI・SLOの運用を始めるときは、なるべくシンプルに、緩めの値で運用を開始していくというのが推奨される。

cf. sre.google - Chapter 4 - Service Level Objectives

実際に自分が業務でSLI・SLOを策定したときは、このNewRelicのプラクティスに従ったが、機能単位のところは調整して余り細かくならないようにした。

機能の単位を最初から細かくしてしまうと運用が大変になってしまうので、運用していく中で適宜必要に応じて粒度を調整していくのが良いのではないかと思う。

Tips

SLI・SLOに関連するキーワードについてのTips。

信頼性と可用性の違い

  • 信頼性
    • システムが持っている性質で、故障への耐性の度合いのこと
  • 可用性
    • システムが継続して稼働できる度合いのこと

稼働率と停止時間の一覧、可用性計算

稼働率 年間停止時間 月間停止時間
99.0% 87.6時間 7.6時間
99.5% 43.8時間 3.65時間
99.9% 8.76時間 43.8分
99.95% 4.38時間 21.9分
99.99% 52.56秒 4.38分
99.999% 5.256秒 26.28秒
99.9999% 31.536秒 2.628秒

エラーバジェットとは

エラーに対する予算で、SLOを基準として算出される許容可能な信頼性の指標のこと。 ex. SLO 99.99% → エラーバジェット 0.01%以下

所感

サービスレベルを測定可能にすることで、サービス利用者(ユーザーあるいはシステム)がサービスを満足に提供できるているかどうか観測可能になり、またサービス提供者にとってサービスレベルの改善が必要かどうかの指標になり得ると思った。

参考

関連書籍