「サービスレベルってなんぞや SLA/SLO/SLI の違い」SLO駆動なSRE活動に向けた取り組み パート1
Agenda
- 登場人物
- 想定読者
- はじめに
- サービスレベル や SLO/SLI/SLA について深掘ろうと思った経緯
- そもそもサービスレベルとは何か
- SLI とは
- SLO とは
- SLA とは
登場人物
- 藤崎:@kyohei_fujisaki
- 増田:@hiro8ma
想定読者
- SRE に取り組んでいる、または取り込もうとしている方
はじめに
サービスレベル や SLO/SLI/SLA について深掘ろうと思った経緯
株式会社 Magic Moment では全てのエンジニアが業務の約 2 割を SRE 活動に当てています。
従来は基準となる指標がないまま、漠然と可用性を高めるための活動を行っており、当然の事ながら成果に伸び悩みました。
また、評価や振り返りに関しても定量的に行うことができていませんでした。
そこでサービスレベルとは何かを見つめ直し SLO を基軸とした SRE にシフトするためにチームが組成されました。
今回は
- 「サービスレベル」「SLO」など言葉として見聞きはしていたもののそれが何かと聞かれた時に返答に困っていたキーワードの深掘り
- SLI/SLO を定義するために取り組んだこと
- 実際に取得し蓄積されたメトリクスを基にどのように SLI / SLO に落とし込んだのか
- 定義した SLO のレビュープロセスの運用
などをシリーズとして分け Magic Moment が如何にして SLO 駆動な SRE に移行することができたのかを述べていきたいと思います。
本記事では 1.「サービスレベル」「SLO」など言葉として見聞きはしていたもののそれが何かと聞かれた時に返答に困っていたキーワードの深掘りについて語っていきます。
「そもそもサービスレベルとは」
増田)今回は SLO/SLI/SLA について考えてみようと思うんですけど、そもそもそれぞれ何の略でしたっけ?
藤崎)SLO は Service Level Objective、SLI は Service Level Indicator、SLA は Service Level Agreement のことですよね!
増田)そうですね!どれも Service Level ってついてますけど、そもそも Service Level ってなんでしょうね。
藤崎)うーん。レベルというからには、サービスの状態を段階的に表すものですかね〜。
増田)なるほど。僕も同じような認識です。サービスの状態という言葉にはサービスの適切な振る舞いとかも含まれているかもしれないですね!
藤崎)ユーザーが快適にサービスを利用できるか、みたいなものを表しているイメージがあります!
増田)そういった部分もありそうですね!
「SLI とは」
増田)では、まずは SLI が何なのか深堀りしていきましょう。SLI は先程確認したとおり、Service Level Indicator のことですが、Indicator、つまり、指標のことですね。
藤崎)指標として一般的に「可用性」「エラー率」「システムスループット」「リクエストのレイテンシ」があげられることが多いように思います。
増田)サービスの稼働状況を数値化したものが指標になっていますね。他にも、Magic Moment だと Magic Moment Playbook の SLI として、dogfooding の状況を使用してサービスの品質の指標にしていたり、各社・各サービスに合わせて最適なものを指標に入れていくのが良いのかなと思います!
藤崎) SLI についてまとめると
- サービスレベル指標(Service Level Indicator = SLI) のこと
- サービスレベル目標を定量的に計測し目標値を満たしているかいないかを判断するための指標
- 一般的な指標として以下が上げられる
- 可用性
- エラー率
- システムスループット
- リクエストのレイテンシ
- サービスの特性に合わせた指標とする
増田)それでは次に SLO について深ぼっていきましょかーー
「SLO とは」
増田)SLO としてまず思いつくものとしては
- 可用性(稼働率、エラーレート)
- レイテンシ
- スループット
- ダウンタイムの解消までの時間
などですね。
藤崎)SLI であげた指標に対する目標数値で、「9」で表されることが多い(99.9%, 99.999%)ですよね。
増田)スリーナインとかフォーナインとかダウンタイムの例とかでよく見ますよね。
増田)UX の判断軸として数値化されているものっていうイメージなのですが。
藤崎)サービスが必要とする運用レベルを達成するための目標値というところでしょうか。
増田)ユーザーが許容できる最低レベルの信頼性を定義してそれを目標値としていく 💡
藤崎)SLO が定義できたらそれを基軸として設計や運用、開発を行っていくのですね。
増田)SLO についてまとめていきますと
- サービスレベル目標(Service Level Objective = SLO)のこと
- 各 SLI に対しての目標数値
- SLI → SLO の順で決める
- 信頼性に関してデータ駆動型の意思決定を下す上での鍵となり SRE の実践の中核となる
増田)それでは最後に SLA について深ぼっていきましょかーー
「SLA とは」
藤崎)SLO はサービスレベルの「目標値」に対して、SLA はサービス提供者とお客様との間でサービスレベルを合意するための数値かなと思っています。
増田)提供サービスの SLO はそもそも、依存している外部サービスの SLA より高く設定できないので、外部サービスの SLA > 提供サービスの SLO として設定するんですよね。
藤崎)その上で、提供サービスの SLA は SLO より低く設定しますよね。これは、お客様との合意のために必ず満たすべき数値なので、目標よりも低く設定しないと合意が取れないからですね。
増田)満たせなかった場合は補償するといったケースもありますよね。
藤崎)なので、慎重に設定する必要がありますね。あと、コーポレートサイトで月次で情報を公開しているところが多いですよね。
増田)SLA をまとめていきますと
- サービスレベルアグリーメント(Service Level Agreement = SLA)のこと
- SLI であげた指標に対するサービスとユーザー間の合意
- 基本的に外部サービスの SLA を考慮して SLO を決め、 提供サービスの SLO < SLA にはならない
- 利用規約等により、サービスとユーザー間で SLA の締結がされると、法的効力を持ち、SLA を満たさなかった場合に、返金等何らかの効果が発生する
- SLA の締結はそれ自体が競争優位性にもなり、サービスレベルの高さをアピールすることになる
- あらかじめサービスレベルの保証水準を明確に合意しておくことで、ユーザーとのトラブル・紛争を未然に防止する効果もある
藤崎)サービスレベルやそれぞれのワードを深掘ってきたことで整理できてきましたね。
増田)切りが良いので、次の記事では僕たちがどのように SLI/SLO を定義したのかこれまでの取り組みを紹介していきましょうか。
藤崎) あ、最後に!Magic Moment では、サービスの根本から一緒に考えて開発してくださる方を募集しています!
Discussion