本文へ移動

ホーム / EM / 第3部 信頼性と運用

第3部 信頼性と運用・第4章

信頼性と SLO

★★☆ 重要5トピック・面接 3問

チームのサービスの信頼性に責任を持ち、開発の速さと安定性のバランスをとるための知識を押さえる。

ひとことで

信頼性の目標を事業と合意し、エラーバジェットで開発の速さを調整する。

SLI・SLO・エラーバジェット・SLASLI測る指標例:成功率SLO目標例:30日で 99.9%エラーバジェット失敗してよい量例:約43分SLA外部との契約返金などSLA は SLO より緩くしておく(内部の目標が先に破れて気づけるように)
SLO は社内の目標、SLA は社外との約束。SLA を守るために、SLO を少し厳しめに置く

SLO(Service Level Objective)は「ログインの成功率を30日で 99.9% 以上」のような信頼性の目標です。100% から SLO を引いた残りがエラーバジェット(失敗してよい量)で、99.9%・30日なら約43分の停止に当たります。

用語意味例
SLI(指標)信頼性を測る数字リクエストの成功率、p99 の応答時間
SLO(目標)SLI に期間と目標値をつけたもの30日で成功率 99.9%
エラーバジェット100% − SLO。失敗してよい量30日で約43分
SLA(契約)顧客との約束。破ると返金などがある月 99.5% を下回ると返金

バジェットが残っていれば新機能を速く出し、減ってきたら信頼性の作業を優先する、というように開発の速さを調整する道具として使います。よくある失敗は、利用者が気にしない指標(CPU 使用率など)を SLO にすること、全部を 99.99% にして開発が止まることです。

エラーバジェットポリシー

面接ではこう答える

SLO は「ログインの成功率を30日で 99.9%」のような信頼性の目標で、測る指標を SLI と呼びます。100% から SLO を引いた残りがエラーバジェットで、99.9% なら30日で約43分の失敗が許されます。バジェットが残っていれば機能開発を優先し、減ってきたら信頼性の作業を優先する、というように、開発の速さと安定性の綱引きを数字で決めるための道具です。顧客との契約である SLA とは分けて、SLO を少し厳しめに置きます。

SLO の質は、何を測るか(SLI)でほぼ決まります。利用者が「使えない」と感じることに近い指標を選びます。

サービスの種類よい SLI の例避けたい例
Web・APIリクエストの成功率、一定時間内に返った割合サーバーの CPU 使用率
バッチ・データ処理期限までに終わった割合、データの新しさジョブのプロセスが動いているか
非同期の処理(通知など)一定時間内に届いた割合キューのサーバーが生きているか
ストレージ読み書きの成功率、データが失われないことディスクの使用率

目標値の決め方

  • 今の実績から始める:過去数週間の値を見て、少し下に置く。いきなり高すぎる目標にしない。
  • 重要な機能に絞る:ログイン・決済など、止まると困る利用者の流れから2〜3個。
  • 9 を1つ増やす重さを知る:99.9% から 99.99% にすると、許される停止は10分の1。人も費用も大きく増える。
  • 定期的に見直す:毎月の振り返りで、厳しすぎ・緩すぎでないかを PdM と確かめる。

SRE の「エラーバジェットポリシーの例」

ひとことで

エラーバジェットが減ったときに何をするかを、障害が起きる前に事業側と文書で合意しておく決まり。

バジェットが減ったときに何をするかを、事前に文書にして PdM・事業側と合意しておきます。障害が起きてから決めると、「それでも機能を出したい」との押し問答になるからです。

バジェットの残り(30日)行動の例
50% 以上通常どおり開発する
25〜50%リスクの高いリリースは事前にレビュー。原因の大きい障害の対策をスプリントに入れる
25% 未満大きな変更は控える。信頼性の作業を優先する
使い切った緊急の修正とセキュリティ対応以外のリリースを止め、信頼性の改善に集中する
エラーバジェットの残りと行動(例)通常どおり開発残り 50% 以上リスクの高い変更は事前にレビュー信頼性の作業を優先する100%50%25%0%障害が起きるたびに、バジェットの残りは右へ減っていく0%:緊急の修正以外のリリースを止める例:99.9%・30日なら、バジェットは約43分
数値は一例。どの段階で何をするかを、障害が起きる前に事業側と合意しておく

例外(どうしても出す必要のあるリリース)を誰が承認するかも書いておきます。数値はチームで決めるもので、上の表は一例です。

毎月の振り返りでは、SLO の達成状況とバジェットの使い道(どの障害・どのリリースで減ったか)を PdM と一緒に見ます。ポリシーが一度も発動しないなら目標が緩すぎ、いつも発動しているなら厳しすぎか、信頼性の作業が足りていないサインです。

面接ではこう答える

エラーバジェットポリシーは、バジェットが減ったときにチームがどう行動を変えるかを前もって決めた文書です。たとえば残りが半分を切ったらリスクの高いリリースを事前レビューにし、使い切ったら緊急の修正以外のリリースを止めて信頼性の改善に集中する、といった内容です。障害が起きてから決めると、それでも機能を出したいという押し問答になるので、平常時に PdM や事業側と合意しておくのが大事です。例外を誰が承認するかも書いておきます。

本番に出す前に確かめること監視SLI とアラート手順書よくある障害負荷想定の数倍戻し方切り戻し・フラグ担当オンコール全部そろってから本番へ。足りないものはリリースの条件として計画に入れる
新しいサービスや大きな機能を出す前の確認(本番準備レビュー)

新しいサービスや大きな機能を本番に出す前に、運用できる状態かを確かめます。SRE の文脈で本番準備レビュー(PRR:Production Readiness Review)と呼ばれるものです。

担い手主な役割
SRE チームSLI の取り方、ダッシュボード、バーンレートアラート(バジェットを使う速さで鳴らすアラート)などの仕組みを提供・助言する
開発チームサービスを作り、監視・手順書を用意し、オンコールを持つ
EMSLO の値を PdM と決める。確認が終わるまで出さない判断をする。足りない作業を計画に入れる

会社によっては SRE がオンコールを持つこともありますが、多くの場合は作ったチームが運用にも責任を持つ形が増えています。EM は「誰が夜中に起こされるのか」をリリース前に決めておきます。

ひとことで

利用の伸びと処理できる上限を見比べ、上限に当たる前に増強や設計の変更を始める計画。

伸びを見て、上限に近づく前に手を打つ処理できる上限増強を始める(準備の時間を見込む)利用量(ピーク時)時間 →
増強や設計の変更には時間がかかるので、上限に当たってからでは遅い

利用が増えると、いつかサーバーや DB の処理できる上限に当たります。上限に当たってから慌てないよう、伸び方を見て前もって手を打つのがキャパシティ計画です。

やること中身
伸びを見るピーク時のリクエスト数・データ量の伸びを月ごとに見る。キャンペーンなど事業の予定も聞く
上限を知る負荷試験で、どこまで耐えられるか・最初にどこが詰まるかを確かめる
余裕を決めるピークに対してどれだけ余裕を持つか(例:想定の2倍)をチームで決める
手を打つ時期増強・設計の変更にかかる時間を見込んで、早めに始める

EM の役割は、事業の予定(大きなキャンペーン、テレビでの紹介など)を早めに聞き出し、負荷試験と増強の作業を計画に入れることです。「来月テレビに出ます」を前日に知るのが一番の事故です。

面接ではこう答える

キャパシティ計画は、利用の伸びを見て、サーバーや DB の上限に当たる前に手を打つことです。負荷試験でどこまで耐えられるか、最初にどこが詰まるかを確かめ、ピークに対する余裕を決めます。増強や設計の変更には時間がかかるので、上限に近づいてからでは間に合いません。EM としては、キャンペーンなど事業の予定を早めに聞き出し、負荷試験と増強を計画に入れることを大事にしています。

この章のまとめ

🖨 まとめシート(印刷・PDF)
  • SLO は利用者の体験に近い指標(SLI)で決め、事業と合意する
  • エラーバジェットポリシーで、減ったときの行動を前もって決めておく
  • 本番に出す前に、監視・手順書・負荷・戻し方を確かめる

この章のクイズ

面接ではこう聞かれる

まず答えを見ずに声に出して答え、そのあと開いて比べる。

Q1SLO とエラーバジェットとは何ですか? バジェットを使い切ったらどうしますか?

模範回答

SLO は「ログインの成功率を30日で 99.9% 以上」のような、信頼性の目標です。100% から SLO を引いた残りがエラーバジェット、つまり失敗してよい量で、99.9%・30日なら約43分の停止に当たります。バジェットが残っていれば新機能を速く出し、減ったら信頼性の作業を優先する、というように開発の速さを調整する道具です。

使い切ったときの行動は、事前にエラーバジェットポリシーとして事業側と合意しておきます。例えば、緊急の修正とセキュリティ対応以外のリリースを止め、障害の原因になった部分の改善に集中する、例外は誰が承認するか、などです。障害が起きてから決めると「それでも機能を出したい」と押し問答になるからです。

また、月に一度は SLO の達成状況を見て、目標が厳しすぎたり緩すぎたりしないかも見直します。

深掘りされたら

  • SLO の値はどうやって決めますか?
  • PdM がリリースを止めたくないと言ったらどうしますか?

見られているポイント仕組みの理解と、ポリシーを事前に合意すること

Q2サービスの SLO を新しく決めるとき、どう進めますか?

模範回答

まず、利用者にとって大事な流れ(ログイン・購入など)を PdM と2〜3個に絞ります。次に、それぞれ利用者の体験に近い指標、たとえばリクエストの成功率や一定時間内に返った割合を SLI として選びます。CPU 使用率のような内部の数字は使いません。

目標値は、過去数週間の実績を見て少し下に置くところから始めます。9 を1つ増やすと許される停止が10分の1になり、人も費用も増えるので、高すぎる目標は避けます。あわせてエラーバジェットポリシーを PdM と合意し、毎月の振り返りで厳しすぎ・緩すぎを見直します。

深掘りされたら

  • SLO を守れない月が続いたら、どうしますか?
  • 社外との SLA とはどう関係させますか?

見られているポイント利用者の体験に近い指標を選び、実績から始めて事業と合意するか

Q3大きなキャンペーンで、アクセスが普段の数倍になると分かりました。何をしますか?

模範回答

まず日時と、どれくらい増えそうかの見込みを事業側に確かめます。次に負荷試験で、想定のピークに耐えられるか、最初にどこが詰まるかを確かめ、増強やキャッシュの追加など必要な作業を計画に入れます。

あわせて、当日は大きなリリースを避ける、監視のダッシュボードとアラートを確かめる、オンコールの人数を増やす、詰まったときに機能を一部止める手段(機能フラグなど)を用意する、といった準備をします。終わったあとは実際の数字を見て、次の見積もりに生かします。

深掘りされたら

  • 負荷試験の結果、間に合わないと分かったらどうしますか?

見られているポイント事業の予定を聞き出し、負荷試験・増強・当日の体制まで準備できるか