はじめに
はじめまして!このたび、イベントで@adachin0817さんと繋がらせていただき、TechBullにJOINさせていただいた@Cooking_ENG です!バックエンドエンジニアからSREにキャリアチェンジするにあたり、今回、SREで実施しなければならない SLI/SLO について調べてみましたので、自分なりにまとめてみました。
自己紹介
約7年ほど和食料理人を経て、コロナをきっかけにエンジニアにキャリアチェンジしました。Ruby on Railsを中心にバックエンドエンジニア、時々React/TypeScriptを使ってフロントエンドもやってました。プログラミングスクールを運営している会社に勤務していたので講師の経験もあります。SREとしての力をつけるため、そして様々な人と交流して情報交換していきたいと思っています。ぜひよろしくお願いします!
なぜ SLI/SLO を策定するのか?
SLI/SLOを策定する理由は、サービスの品質を客観的に測定し、継続的に改善していくためです。具体的には以下のような目的があります。
サービス品質の可視化
曖昧な「安定している」「速い」といった感覚的な評価ではなく、数値で明確にサービスの状態を把握できます。これにより、チーム全体で共通の認識を持つことができ、改善すべき点を特定しやすくなります。
適切なリソース配分の実現
100%の完璧なシステムを目指すと膨大なコストがかかりますが、適切なSLOを設定することで「ビジネスに必要な品質レベル」を明確にし、過度な投資を避けながら効果的にリソースを配分できます。
障害対応の優先順位付け
SLIがSLOを下回った際に、どの問題から優先的に対応すべきかを判断する基準となります。また、エラーバジェットの概念により、新機能開発と安定性向上のバランスを取ることができます。
SLAとは
その前にSLA(Service Level Agreement)があります。SLOで定めた目標値を顧客や利用者と正式に取り決める契約です。単に「これだけ守る」とチーム内で決めるだけでなく、「もし守れなかったらこうします」という補償条件やペナルティまで明文化し、保証することです。
SLAとして代表的なものには、以下のような合意内容があります。
-
「月間稼働率99.9%未満の場合は、翌月の利用料を10%割引する」
-
「APIの応答時間が500msを超えた場合、無料でサポートの優先対応を行います。」
SLOで定めた品質基準を契約書に明記することで、顧客との責任範囲を明確化し、お互いの信頼関係を構築することができます。
SLOとは
SLOは(Service Level Objective)は、SLIに基づいて設定される、サービス品質の目標値です。SLOとして代表的なものには、以下のような指標があります。
- 「サービスの可用性は99.9%以上であること」
- 「システムの応答時間は平均2秒以内であること」
前述した「SLI」がこれらの数値を下回ると「改善が必要」と判断されます。このように、何をどれくらい達成すべきかを具体的に数値で示すのがSLOです。また、SLOの数値は組織がビジネス目標を達成するうえで許容可能な最低限のレベルが望ましいとされています。
100%止まらないシステムをつくるには、とても大きなコストと時間がかかるので、必要な分だけの安定性を決めることもSLOの大切な役割です。
- SLOにあるエラーバジェットとは
SLO(Service Level Objective)を前提にした許容される失敗の枠のことです。
例えば、SLOが「月間可用性99.9%」の場合、エラーバジェットとして月に約43分のダウンタイムが許容されます。このバジェットに余裕がある時は新機能のリリースを積極的に行い、バジェットを使い切りそうな場合は新機能開発を一時停止して安定性向上に集中するといった判断が可能になります。
SLIとは
SLI(Service Level Indicator)とは、サービスのパフォーマンスや信頼性を数値で表す定量的な指標です。SLIはSLO(サービスレベル目標)の達成状況を測るための基盤にもなります。例えば「月間の稼働率が99.00%」をSLOとして定めた場合、SLIはその値以上である必要があります。
SLIとして代表的なものには、以下のような指標があります。
- 待ち時間(Latency):(例) 95%のAPIレスポンス時間が250ms以内
- 可用性(Availability):(例) 月間稼働率99.95%
- 処理能力(Throughput):(例)1秒間に1,200リクエストを処理
SLIは、例のようにシンプルに保ち、追跡するために適切な指標を選択することが大切です。重要でない指標をむやみに増やすと、判断が複雑になり、本来注力すべき課題を見失う原因にもなります。本当に価値のある指標に絞ることで、運用の負担を減らしつつ、効果的にモニタリングできます。
まとめ
実際にはもっと細かく設定されたり、どのように設定されるかなどもあると思いますが、ひとまず何を意味しているのかのイメージができるだけでも、SREとして追う指標の解像度がグッと上がる気がしました。また、SLI/SLOを策定することによって、サービスの信頼性向上を維持できることも分かりました。次回は、Datadogなどを利用して、具体的にSLI/SLOを設定してみたいと思います!

約7年間、和食料理人として働き、コロナ禍をきっかけにエンジニアへとキャリアチェンジする。現在はRuby on Railsを中心にバックエンド開発を担当し、ReactやTypeScriptを使ったフロントエンド開発にも取り組んでいる。以前はプログラミングスクールを運営する会社で、エンジニア講師として未経験の方の学習支援を行う。TechBullに出会えたことで、今後はSREになるために技術のキャッチアップや運営チームとして活動。