emahiro/b.log

Drastically Repeat Yourself !!!!

SLI/SLO について

Overview

SRE NEXT のセッション、および懇親会でお話いただいた内容を受けて自分なりに SLI/SLO についてまとめてみる。
※ あくまで自分の解釈ですのでご了承ください。

そもそも SLI / SLO とは?

SRE本 によると以下のように定義される。

  • SLI ... Service Level Indicator

    • サービスを維持するための指標。指標なので具体的な数値ではない
  • SLO ... Service Level Object

    • SLI で計測される具体的なターゲット値やターゲット値の範囲。SLO が具体的な数値。
      • SLI <= ターゲット値(SLO)
      • 下限(SLO)<= SLI <= 上限 (SLO)

SLO と Error Budget

原則として SLO は 100% にしてはいけない
100% を目指すのは好ましくない という表現も見かけたことがあるが、SRE NEXT の懇親会で聞いた話の中には、100% にしてはいけない、という表現を使っていたと記憶している。

これはなぜなのかということを考えてみた。
まず サービスの信頼性 100% - SLO = Error Budget という式が成り立つことをまず抑える必要がある。
そして、この Error Budget について「予算」という表現をしていることがポイントなのではないかなと個人的には考えるようになった。

予算は予算だし、これは使いすぎたらもちろんアウトだけど、余らせることも好ましいことではない、というのが予算の考え方における一般的な解釈だと思う。

SLO と Error Budget についても同様のアプローチで考えることができ、SLO を下回らない範囲で色々なチャレンジをすることをSRE(ここはSREに止まらずプロダクトの開発に関わるステークホルダーに対して)に課しているという捉え方ができる。予算なんだから十分に使い切らなければならない。

そう考えると SLO はこれを下回らなければ何をしてもいい、という「余裕」を持つこと と捉えることができる。
(ymotongpoo san のセッションでも「余裕」を持つこと、という話がされていたと思う。)

SLI/SLO は「どう失敗すべきか、そしてそこから何を学ぶか」という考え方によって生み出された指標とも言えそう。

Google の SRE は予算を使い切らない場合は「本当に仕事をしてるの?」ということを問われるという話もあった。
予算を余らせている = フィーチャーや改善のチャレンジをしていないと見なされるし、そのように評価される。もし予算を使い切っていなければ、そのプロダクトから SRE の工数を削られてしまうこともあるらしい。
SLI/SLO という指標と数字が実際の業務のあり方を定義している具体的なお話でこれを聞いた時には、月並みな感想だけど「Googleってやっぱりすごい...」と感じてしまった...。

まとめ

SLI/SLO、言葉だけは知っていたし、その定義や指し示すところも理解していたつもりだったけど、突き詰めて考えると、その指標が自身の行動や業務を規定するある意味強烈な指標であり、策定するにも運用するにも覚悟が求められる指標だな、ということを考えたので備忘録で残しておく。