LESSON 30分

ストーリー

田中VPoE
SLI/SLO戦略の基本フレームワークは固まった。次は「階層設計」だ。組織のSLOは単一のフラットなリストではない。ユーザージャーニー、サービス依存関係、ビジネスドメインに沿った「構造」が必要だ
あなた
サービスごとにSLOを定義するだけでは駄目ですか?
田中VPoE
それだけだと「サービスBのSLOは99.9%だが、サービスBが依存するサービスCのSLOは99.5%」のような矛盾が発生する。下流のSLOが上流より緩いと、上流のSLOは原理的に達成不可能だ。依存関係を考慮した階層的な設計が不可欠だ
あなた
なるほど。依存関係チェーンを考慮してSLOを上から下へ設計するということですね
田中VPoE
まさにそうだ。さらに、個別サービスのSLOだけでなく「ユーザージャーニーSLO」という上位概念も導入する。ユーザーが体験するEnd-to-Endの品質を保証するためだ

SLO階層の全体構造

3層のSLO階層

┌─────────────────────────────────────────────┐
│ Layer 1: ジャーニーSLO                        │
│ 「ユーザーが体験するEnd-to-Endの品質」         │
│ 例: タスク作成→保存→表示 が2秒以内: 99.9%    │
├─────────────────────────────────────────────┤
│ Layer 2: サービスSLO                          │
│ 「個々のマイクロサービスの品質」               │
│ 例: API Gateway 可用性 99.95%               │
├─────────────────────────────────────────────┤
│ Layer 3: インフラSLO                          │
│ 「基盤サービスの品質」                        │
│ 例: データベース可用性 99.99%                 │
└─────────────────────────────────────────────┘
対象設定者レビュー頻度
ジャーニーSLOユーザーが体験するEnd-to-Endフロープロダクト + SRE月次
サービスSLO個々のマイクロサービスサービスオーナーチーム隔週
インフラSLODB、キャッシュ、メッセージキューなどの基盤インフラ/プラットフォームチーム月次

Layer 1: ジャーニーSLO

ジャーニーSLOとは

観点説明
定義ユーザーが特定の目的を達成するまでのEnd-to-Endフローに対するSLO
目的個別サービスのSLOだけでは捉えられない「体験全体の品質」を保証する
特徴複数のサービスSLOを組み合わせた複合的な指標

ジャーニーSLOの具体例(TaskFlow社)

ジャーニーSLI定義SLO
タスク作成タスク作成API呼出→DB保存→画面反映までが2秒以内99.9%
プロジェクト一覧表示ログイン→プロジェクト一覧取得→レンダリング完了が3秒以内99.9%
通知配信イベント発生→通知生成→ユーザーへの配信が30秒以内99.5%
レポート生成レポート要求→データ集計→PDF生成→ダウンロード可能が60秒以内99.0%
決済処理決済開始→外部ゲートウェイ→完了通知が5秒以内99.95%

ジャーニーSLOの計算

ジャーニー: タスク作成
  関与サービス:
    1. Web Frontend (レンダリング)
    2. API Gateway (ルーティング)
    3. Task Service (ビジネスロジック)
    4. Database (永続化)
    5. Notification Service (リアルタイム更新)

  各サービスSLO:
    Web Frontend:        99.95%
    API Gateway:         99.99%
    Task Service:        99.95%
    Database:            99.99%
    Notification:        99.9%

  直列依存の場合の理論的上限:
    0.9995 × 0.9999 × 0.9995 × 0.9999 × 0.999
    = 99.78%(理論的上限)

  → ジャーニーSLO 99.9% を達成するには
    各サービスのSLOを高く維持する必要がある

「ジャーニーSLOは”チームの壁”を越える指標だ。個々のチームが自チームのSLOを達成していても、ユーザージャーニー全体が満足な品質でなければ意味がない」 — 田中VPoE


Layer 2: サービスSLO

サービス依存関係とSLOの整合性

ルール説明
上流≧下流上流サービスのSLOは下流以下にできないAPI(99.95%) → DB(99.99%)
依存数の考慮依存が多いほどSLOマージンが必要5サービス依存→各99.99%でも全体99.95%
クリティカルパスの特定ジャーニー上の最もSLOが低い経路が全体を制約通知(99.9%)がボトルネック
グレースフルデグラデーション非クリティカル依存の障害では機能縮退で継続検索ダウン時はキャッシュ結果を表示

依存関係マトリクス

依存関係マップ(TaskFlow社):

  Web Frontend
    ├── API Gateway (同期・クリティカル)
    │     ├── Task Service (同期・クリティカル)
    │     │     ├── Database (同期・クリティカル)
    │     │     └── Cache (同期・非クリティカル)
    │     ├── Search Service (同期・非クリティカル)
    │     │     └── Elasticsearch (同期・クリティカル)
    │     ├── Payment Service (同期・クリティカル)
    │     │     └── External Gateway (同期・クリティカル)
    │     └── Notification Service (非同期・非クリティカル)
    │           ├── Message Queue (非同期・クリティカル)
    │           └── Email/Push Provider (非同期・クリティカル)
    └── CDN (同期・クリティカル)

SLO伝播ルール

依存タイプSLOへの影響設計指針
同期・クリティカル直接影響(掛け算)下流SLOは上流より高く設定
同期・非クリティカルフォールバック時は影響なしサーキットブレーカーで保護、SLOは独立
非同期・クリティカル遅延許容だがデータ損失は不可メッセージキューの耐久性SLOで担保
非同期・非クリティカルベストエフォートSLOは参考値、エラーバジェットは緩め

Layer 3: インフラSLO

基盤サービスのSLO設計

基盤サービスSLISLO根拠
RDS (Primary)成功クエリ率99.99%全上位サービスのクリティカル依存
RDS (Read Replica)成功クエリ率 + レプリケーション遅延99.95%読取専用、多少の遅延許容
ElastiCacheキャッシュヒット率を除く可用性99.99%キャッシュミスはDB直接参照で代替可能
SQS/SNSメッセージ配信成功率99.99%非同期処理の信頼性基盤
ECS/EKSPod/Task起動成功率99.95%コンテナオーケストレーション

インフラSLOがサービスSLOに与える影響

インフラ障害の波及:

  RDS障害(SLO: 99.99%)
    → Task Service 影響 (直接依存)
    → Payment Service 影響 (直接依存)
    → Search Service 影響なし (Elasticsearch使用)
    → Notification Service 部分影響 (配信ログのみDB)

  影響範囲:
    Tier 1サービス: 2/2 影響あり(100%)
    Tier 2サービス: 1/2 影響あり(50%)
    → RDB障害はビジネスインパクト最大
    → 99.99%のSLOが妥当

SLO依存関係の設計手法

ステップ1: 依存関係グラフの作成

ステップアクション成果物
1-1全サービスの一覧化サービスカタログ
1-2サービス間の呼び出し関係を可視化依存関係グラフ
1-3各依存を「同期/非同期」「クリティカル/非クリティカル」で分類依存関係マトリクス
1-4ユーザージャーニーごとのクリティカルパスを特定クリティカルパスマップ

ステップ2: ボトムアップSLO設計

ステップアクションポイント
2-1インフラSLOを設定(最も高いSLO)クラウドSLAを参考に設定
2-2サービスSLOをインフラSLO以下で設定依存数に応じてマージンを確保
2-3ジャーニーSLOをサービスSLOの組合せで検証クリティカルパスのSLO積が目標を上回ることを確認

ステップ3: トップダウン検証

ステップアクションポイント
3-1ジャーニーSLOからサービスSLOの必要水準を逆算全体SLOから個別SLOの下限を算出
3-2ボトムアップ結果とトップダウン結果を突合矛盾がある場合はSLOを調整
3-3コストとのバランスで最終決定SLO引き上げのコスト影響を評価

SLO階層設計のアンチパターン

アンチパターン問題対策
フラットSLO全サービスが同じSLOで依存関係を無視階層設計と依存関係分析の実施
過剰SLO全サービス99.99%で人もコストも疲弊ティア制度に基づく現実的なSLO設定
孤立SLO個別チームが独自にSLOを設定し整合性なしジャーニーSLOによるEnd-to-End検証
静的SLO一度設定したら見直さない四半期レビューによる継続的な調整
SLO乖離SLO目標と実績が大幅に乖離現状実績ベースのSLO設定と段階的引き上げ

まとめ

ポイント内容
3層のSLO階層ジャーニーSLO → サービスSLO → インフラSLOの3層で構造化
依存関係の整合性上流のSLOは下流以下にできない、クリティカルパスの掛け算を考慮
ボトムアップ + トップダウン双方向から設計し矛盾を検出・解消する
アンチパターン回避フラット・過剰・孤立・静的なSLO設計を避ける

チェックリスト

  • ジャーニーSLO、サービスSLO、インフラSLOの3層構造を理解した
  • 依存関係タイプ(同期/非同期、クリティカル/非クリティカル)によるSLO伝播を理解した
  • ボトムアップ設計とトップダウン検証の手法を理解した
  • SLO階層設計のアンチパターンを理解した

次のステップへ

次は「エラーバジェットポリシーの組織展開」を学びます。SLOを設定した後、エラーバジェットをどのように管理し、組織全体で活用するかを身につけましょう。


推定読了時間: 30分