本文へ移動

ホーム / PdM / 第5部 品質・障害・セキュリティ

第5部 品質・障害・セキュリティ・第11章

品質と SLO

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

品質の目標を決め、その目標で開発の速さと安定性のバランスを取るための知識を押さえる。障害が起きたときの動き方は次の章で扱う。

ひとことで

信頼性の目標を数値で決め、余り(エラーバジェット)の範囲で新機能を攻める。使い切ったら安定化を優先する。

SLI は信頼性を測る指標(例:成功したリクエストの割合)、SLO はその目標値(例:30日間で 99.9%)です。目標を100%にしないのがポイントで、100%との差がエラーバジェット(失敗してよい量)になります。バジェットが残っているうちは新機能を攻め、使い切ったら安定化を優先します。

SLO 99.9%(30日)なら、止まってよいのは約43分エラーバジェット 43分の使い方(例)障害で使った 20分残り 23分0分43分残っている新機能を攻める段階的リリースで試す使い切った新機能のリリースを止め安定化を優先(事前に合意)
エラーバジェット:残りがあれば攻め、使い切ったら安定化
SLO30日で許される停止時間の目安イメージ
99%約7.2時間社内ツールなど
99.9%約43分多くの Web サービス
99.99%約4.3分決済などの重要な機能。設計・運用のコストが大きく上がる

PdM が SLO に関わる理由:どこまで信頼性を求めるかは、技術ではなく事業の判断だからです。目標を高くするほど冗長化の費用や慎重なリリースが必要になり、新機能の速度が落ちます。低すぎるとユーザーが離れます。また「ユーザーにとって何が使えない状態か」(ログインできない、検索が3秒以上かかる)を決めるのも、ユーザーをいちばん知る PdM の仕事です。機能ごとに重要度が違うので、決済は高く、おすすめ表示は低く、のように分けることもあります。

SRE の「SLI / SLO / SLA」

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

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

面接ではこう答える

SLI は信頼性を測る指標で、例えば成功したリクエストの割合です。SLO はその目標値で、例えば30日間で 99.9% のように決めます。100% にしないのがポイントで、100% との差がエラーバジェット、つまり失敗してよい量になります。バジェットが残っているうちは新機能を攻め、使い切ったら安定化を優先します。どこまで信頼性を求めるかは事業の判断なので、PdM も目標づくりに関わるべきだと考えています。

11.2何を SLI にするか

用語★★☆ 重要
ひとことで

ユーザーから見た成功と速さを表す数字。どの操作を何秒で「使えない」とするかは PdM と決める。

ユーザーの大事な流れごとに「使えない」を決めるログイン成功率検索1秒以内の割合カート成功率決済成功率・最優先サーバーの CPU ではなく、ユーザーから見た成功と速さで測る
ユーザーの流れごとの SLI

SLI は「ユーザーにとって使えているか」を表す数字にします。サーバーの CPU 使用率のような内部の数字ではなく、ユーザーから見た成功と速さです。どの操作が大事か、何秒かかったら「使えない」と感じるかを一番知っているのは PdM なので、一緒に決めます。

機能SLI の例SLO の例
決済決済の成功の割合30日で 99.95%
検索1秒以内に結果が返った割合30日で 99%
おすすめ表示表示できた割合30日で 99%(なくても買える)
通知5分以内に送れた割合30日で 99%

機能ごとに重要度が違うので、全部を同じ高さにしないことが大事です。

面接ではこう答える

SLI は、サーバーの CPU のような内部の数字ではなく、ユーザーから見て使えているかを表す数字にします。例えば決済の成功率や、検索が1秒以内に返った割合です。どの操作が大事か、何秒かかったら使えないと感じるかはユーザーを一番知る PdM が分かるので、エンジニアと一緒に決めます。機能ごとに重要度が違うので、決済は高く、おすすめは低く、のように分けます。

11.3SLA と SLO の違い

用語★☆☆ 発展
ひとことで

SLA は顧客との契約で、下回ると返金など。SLO は社内の目標で、SLA より厳しく置く。

SLO は SLA より厳しく置き、契約違反の手前で気づくSLO(社内の目標):99.95%SLA(顧客との契約):99.9%。下回ると返金などこの間が「契約違反の前に直す」余裕
SLA と SLO の関係
言葉意味相手
SLI信頼性を測る数字社内
SLOSLI の目標値。下回ったら安定化を優先社内(開発・PdM)
SLA顧客と結ぶ約束。下回ったら返金・値引きなど顧客(契約)

SLA は営業や契約で決まることが多く、SLO を SLA より厳しく置いて、契約違反になる前に気づけるようにします。営業が大口の顧客に高い SLA を約束しそうなときは、今の実績と費用を確かめてから決めます。

面接ではこう答える

SLI は信頼性を測る数字、SLO はその社内の目標、SLA は顧客と結ぶ約束で、下回ると返金や値引きが発生するものです。SLO は SLA より厳しく置いて、契約違反の前に気づいて直せるようにします。PdM としては、営業が高い SLA を約束しそうなとき、今の実績とそれを上げる費用を確認してから決めるようにしています。

ひとことで

エラーバジェットを使い切ったときに何をするかを、障害の前に文書で合意しておくもの。

残りに応じて何をするかを、先に決めておくバジェットの残りを見る残りが多い:新機能を攻める残りが少ない:慎重に出す使い切った:安定化を優先段階的リリースで試す大きな変更は延期も検討例外は責任者が合意して決める
エラーバジェットポリシーの例

エラーバジェットポリシーの合意:バジェットを使い切ったときに何をするかを、障害が起きる前に文書で決めておきます。例:「使い切ったら、緊急の修正以外の新機能のリリースを止め、信頼性の改善を優先する」「例外は PdM と開発の責任者が合意して決める」。事前に決めておくと、障害のたびに「機能か安定か」で揉めずに済みます。

ポリシーに書くこと例
使い切ったときの動き緊急の修正以外の新機能のリリースを止め、信頼性の改善を優先する
どこまで止めるかそのサービスだけ。ほかのチームの機能は止めない
例外の決め方PdM と開発の責任者が合意し、理由を記録する
戻る条件バジェットが回復する、または原因の対策が終わる

面接ではこう答える

エラーバジェットポリシーは、バジェットを使い切ったときに何をするかを、障害が起きる前に文書で決めておくものです。例えば、使い切ったら緊急の修正以外の新機能のリリースを止めて信頼性の改善を優先し、例外は PdM と開発の責任者が合意して決める、と書きます。事前に決めておくと、障害のたびに機能か安定かで揉めずに済むので、私は PdM として作るときから参加するようにしています。

下の層ほど数が多く速い。上の層は少なく、ユーザーの流れを確かめるE2E結合テスト単体テスト画面を通して流れを確かめる(遅い)部品をつないで確かめる関数ごと。速く大量に
テストのピラミッド

自動テストは、速くて数の多い単体テストを土台に、部品をつなぐ結合テスト、画面を通してユーザーの流れを確かめる E2E テストを少し、という形が基本です。自動テストで見つけにくい使い勝手や想定外の操作は、人が触って確かめる探索的テストで補います。

PdM の関わり方内容
受け入れ条件を書く「何ができたら完成か」を仕様に書き、テストの観点にしてもらう
受け入れ確認ステージングや社内公開で、条件どおりに動くかを自分で触る
テストの時間を計画に入れる「実装が終わった=完成」ではない

受け入れ条件の書き方

影響の広さ × 深刻さで優先度を決める影響を受ける人の多さ →深刻さすぐ直す(P1)早めに直す(P2)次のスプリント(P2〜P3)計画に入れる(P3〜P4)
不具合の優先度のマトリクス
深刻さの目安例
高いお金・個人情報・データが失われる。主要な操作ができない
中くらい回避策はあるが手間。一部の端末で表示が崩れる
低い見た目のずれ、まれな条件でだけ起きる

優先度の基準を決めておくと、「声の大きい人の不具合が先に直る」を防げます。回避策があるなら、サポートに共有して直すまでの間をしのぎます。お金や個人情報に関わるものは、人数が少なくても優先します。

この章のまとめ

🖨 まとめシート(印刷・PDF)
  • SLO とエラーバジェットで「新機能と安定性」のバランスを事前に合意する
  • ユーザーにとって「使えない」状態を決めるのは PdM の仕事
  • テストの層と受け入れ条件、不具合の優先度の付け方を知る
  • SLO とエラーバジェット:信頼性の目標を数値で決め、余り(エラーバジェット)の範囲で新機能を攻める。使い切ったら安定化を優先する。
  • 何を SLI にするか:ユーザーから見た成功と速さを表す数字。どの操作を何秒で「使えない」とするかは PdM と決める。
  • SLA と SLO の違い:SLA は顧客との契約で、下回ると返金など。SLO は社内の目標で、SLA より厳しく置く。
  • エラーバジェットポリシー:エラーバジェットを使い切ったときに何をするかを、障害の前に文書で合意しておくもの。

この章のクイズ

面接ではこう聞かれる

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

Q1SLO とは何ですか?PdM はどう関わりますか?

模範回答

SLO は、サービスの信頼性の目標値です。例えば「30日間でリクエストの 99.9% が成功する」のように決め、100% との差をエラーバジェット(失敗してよい量)と呼びます。99.9% なら30日で約43分止まってよい計算になります。

PdM が関わるのは、どこまでの信頼性を求めるかが事業の判断だからです。高くするほど費用がかかり、新機能の速度が落ちます。ユーザーにとって何が「使えない状態」かを決め、機能ごとの重要度を伝え、エラーバジェットを使い切ったときに新機能より安定化を優先するというポリシーを、事前に開発と合意します。

深掘りされたら

  • SLO の目標値はどうやって決めますか?

見られているポイントSLO とエラーバジェットの意味、事業判断としての関わり方

Q2エラーバジェットを使い切りましたが、来週に大事な新機能のリリースがあります。どうしますか?

模範回答

まず、事前に合意したエラーバジェットポリシーに従うのが基本です。ポリシーで「使い切ったら新機能のリリースを止める」と決めていれば、その約束を守ることが信頼につながります。

そのうえで、リリースの事業上の重要度と、そのリリースが信頼性に与えるリスクをエンジニアと確かめます。どうしても出す必要があるなら、ポリシーで決めた例外の手順に沿って責任者が合意し、段階的リリースやすぐ止められるフラグで影響を小さくします。同時に、バジェットを使った原因の対策を優先して計画に入れます。

深掘りされたら

  • ポリシーを事前に決めていなかったら、どうしますか?

見られているポイントポリシーを守る・例外は合意して記録・リスクを小さくして出す

Q3SLO を決めるとき、PdM としてどんな意見を出しますか?

模範回答

ユーザーにとって何が「使えない」かと、機能ごとの重要度について意見を出します。例えば、決済の失敗はすぐ売上と信頼に響くので高い目標にし、おすすめ表示は表示できなくても買い物はできるので低めにする、という具合です。何秒で遅いと感じるかも、ユーザーの行動のデータから出します。

また、目標を上げるほど費用と開発の速さに響くことも理解したうえで、今の実績と、上げたときの費用をエンジニアから聞いて決めます。

深掘りされたら

  • SLO を下回り続けたらどうしますか?

見られているポイントユーザー視点と費用のバランスで目標を考えられるか