ストーリー
田
田中VPoE
エラーバジェットの概念を理解した。次は実践だ。理論は美しいが、実際にSLOを設計しようとすると「何を測ればいいのかわからない」「目標値をどう決めればいいのか」という壁にぶつかる
あなた
確かに、概念はわかっても具体的な設計は難しそうです
あ
田
田中VPoE
よくある失敗は、インフラ指標(CPU使用率、メモリ使用率)をSLIにしてしまうことだ。サーバーは元気なのにユーザーは困っている、という状態が見えなくなる
あなた
ユーザー視点の指標を選ぶことが重要なんですね
あ
田
田中VPoE
そうだ。そして、SLOは「設定して終わり」ではない。運用しながら調整する仕組みも含めて設計する必要がある
SLO設計の5ステップ
ステップ1: ユーザージャーニーの特定
ECサイトの例:
ユーザージャーニー:
1. トップページにアクセス
2. 商品を検索
3. 商品詳細を閲覧
4. カートに追加
5. 決済を完了
クリティカルジャーニー(最重要):
→ 4. カートに追加 〜 5. 決済を完了
理由: ここで障害が起きると直接的な売上損失
ステップ2: SLIの選定
| ジャーニー | SLIタイプ | 具体的なSLI |
|---|
| トップページ | レイテンシ | ページ読み込み完了 ≤ 2秒の割合 |
| 商品検索 | 可用性 + レイテンシ | 検索API成功率、P99 ≤ 300ms |
| 商品詳細 | 可用性 | 商品詳細ページの正常表示率 |
| カート操作 | 可用性 + 正確性 | カートAPI成功率、在庫整合性 |
| 決済 | 可用性 + 正確性 | 決済成功率、金額計算の正確性 |
ステップ3: SLO値の決定
| 判断基準 | 方法 |
|---|
| 現状のパフォーマンス | 過去30日のデータからベースラインを取得 |
| ビジネス要件 | 売上影響、競合水準、顧客期待 |
| 技術的実現可能性 | アーキテクチャの制約、依存サービスの信頼性 |
| コスト | 9を1つ増やすためのコスト見積もり |
SLO決定の具体例:
1. 現状の可用性を測定: 99.85%(過去90日平均)
2. ユーザー要求を分析: サポート問い合わせの40%が「つながらない」
3. 競合水準を確認: 業界平均 99.9%
4. コスト分析:
- 99.9% → 現行アーキテクチャの改善で実現可能
- 99.95% → マルチリージョン化が必要(+月50万円)
- 99.99% → 専用インフラ + 24/7オンコール(+月200万円)
→ SLO: 99.9%(現実的かつ改善が必要な水準)
ステップ4: エラーバジェットポリシーとの連携
| SLO | エラーバジェット(月間) | バジェット枯渇時のアクション |
|---|
| 可用性 99.9% | 43.2分 | 新機能リリース凍結 |
| 検索レイテンシ P99 ≤ 300ms(99.5%) | 月間リクエストの0.5% | パフォーマンス改善スプリント |
| 決済正確性 99.99% | 月間決済の0.01% | 決済システム緊急レビュー |
ステップ5: 継続的な改善
| 活動 | 頻度 | 内容 |
|---|
| SLIダッシュボードレビュー | 毎日 | バーンレートの確認 |
| SLO達成度レポート | 毎週 | 週次の達成状況をステークホルダーに共有 |
| SLO見直し会議 | 四半期 | SLO値の妥当性を評価、必要に応じて調整 |
| ユーザー満足度との相関分析 | 半期 | SLOとNPS/CSATの相関を検証 |
SLO設計のアンチパターン
よくある間違い
| アンチパターン | 問題 | 正しいアプローチ |
|---|
| インフラ指標をSLIにする | CPU 80%でもユーザーは困らないかもしれない | ユーザー体験指標を使う |
| SLOを100%にする | エラーバジェットがゼロで何も改善できない | ビジネスに必要な水準を設定 |
| SLOが多すぎる | 管理不能、どれが重要かわからない | サービスあたり2-4個のSLO |
| 全サービス同じSLO | 重要度が違うのに同じ目標 | クリティカリティに応じて差別化 |
| SLOを変更しない | ビジネス環境の変化に追従できない | 四半期レビューで調整 |
| 平均値を使う | 外れ値が隠される | パーセンタイル(P99、P95)を使う |
「正しそうだが間違い」の事例
間違い: 「サーバーの死活監視の成功率 = 可用性SLI」
問題: サーバーは生きているがアプリがハングしている場合を検出できない
正解: 「ユーザーリクエストの成功率 = 可用性SLI」
間違い: 「平均応答時間 200ms → SLO達成」
問題: P99が10秒でも平均は200msになりうる。1%のユーザーは10秒待っている
正解: 「P99応答時間 ≤ 500ms(99.5%のリクエスト)」
間違い: 「月間可用性 99.9% → 全時間帯で均等に43.2分使える」
問題: ピーク時間帯の1分とオフピークの1分は影響が全く違う
正解: 時間帯加重SLOの検討、またはピーク時間帯のみのSLOを追加
SLOドキュメントテンプレート
記載すべき項目
| セクション | 内容 |
|---|
| サービス概要 | サービス名、オーナー、依存サービス |
| ユーザージャーニー | 主要なユースケースとクリティカルパス |
| SLI定義 | 各SLIの計算式とデータソース |
| SLO値 | 目標値、計測ウィンドウ、根拠 |
| エラーバジェット | 月間バジェット量、消費時のアクション |
| 除外事項 | SLO計測から除外する条件 |
| レビュースケジュール | SLOの見直し頻度と担当者 |
まとめ
| ポイント | 内容 |
|---|
| 設計の起点 | ユーザージャーニーからSLIを導出する |
| SLO値の決定 | 現状ベースライン × ビジネス要件 × コスト制約 |
| アンチパターン | インフラ指標、100%目標、平均値は避ける |
チェックリスト
次のステップへ
次は「エラーバジェットポリシー」です。エラーバジェットの消費に応じた具体的なアクションを定義するポリシーの策定方法を学びましょう。
推定読了時間: 30分