SLI/SLO設計の実践ガイド|AIサービス・マルチクラウド対応の信頼性指標

AIサービス・マルチクラウド環境に対応したSLI/SLO設計を徹底解説。エラーバジェット管理から運用まで実践的に学べます。今すぐ確認。

SLI/SLO設計の実践完全ガイド2026|AIサービス・マルチクラウド対応の信頼性指標設計

2026年現在、サービス信頼性の管理はかつてなく複雑化しています。LLM(大規模言語モデル)を活用したAIサービスの急速な普及、マルチクラウド・エッジコンピューティングの標準化、そしてストリーミング処理の主流化により、従来の「可用性99.9%」という単純なSLOだけでは信頼性を語れない時代になりました。

Google SREハンドブックが定義したSLI/SLOの概念は今でも有効ですが、2026年のシステムに適用するためには大幅なアップデートが必要です。本記事では、最新のベストプラクティスに基づき、現代のシステムにフィットしたSLI/SLO設計を実践的に解説します。


なぜ2026年のSLI/SLO設計は難しいのか

従来のSLOが「Web APIの可用性とレイテンシ」を中心に設計されていたのに対し、現代のシステムは複数のパラダイムが混在しています。

flowchart TD
    A[現代システムの複雑性] --> B[AIサービス]
    A --> C[マルチクラウド]
    A --> D[ストリーミング処理]
    A --> E[エッジコンピューティング]

    B --> B1[推論レイテンシの非決定性]
    B --> B2[出力品質の定量化困難]
    C --> C1[クロスクラウドのSLA差異]
    C --> C2[依存関係の複雑化]
    D --> D1[エンドツーエンド遅延の計測]
    D --> D2[部分的障害の扱い]
    E --> E1[ネットワーク分断への対応]
    E --> E2[ローカルキャッシュの影響]

これらの課題を整理すると、SLIを選定するフェーズから設計方針を変える必要があることがわかります。

2026年のSLI分類フレームワーク

2026年現在、業界標準として定着しつつある**「SLIE(SLI Extended)フレームワーク」**では、以下の4カテゴリでSLIを整理することが推奨されています。

⚠️ 注記: 「SLIE(SLI Extended)フレームワーク」は執筆時点(2026年想定)で「業界標準として定着しつつある」と記述されていますが、広く確認された標準仕様ではない可能性があります。ご自身で最新情報をご確認ください。

カテゴリ旧来の代表SLI2026年型SLI例
Availability(可用性)HTTP 2xx率成功レスポンス率(非同期含む)、部分可用率
Latency(遅延)p99レイテンシTime-to-First-Token(TTFT)、ストリーム完了時間
Quality(品質)エラー率AI出力適切率、データ鮮度、精度スコア
Throughput(スループット)RPS処理バックログ率、コンシューマーラグ率

特に「Quality」カテゴリは2025〜2026年にかけて急速に重要性が増しており、AIサービスを提供する企業では出力品質スコアをSLIとして組み込むことが当たり前になっています。


AIサービスのSLI/SLO設計:具体的アプローチ

LLMベースのサービスにSLOを設定する際、最大の課題は「品質」の定量化です。2026年現在では、以下のアプローチが実用化されています。

LLMサービスのSLI設計例

# SLO定義ファイル (OpenSLO v1.2形式 - 2026年版)
apiVersion: openslo/v1
kind: SLO
metadata:
  name: ai-chat-service-slo
  labels:
    team: platform-sre
    tier: critical
spec:
  service: ai-chat-service
  description: "AIチャットサービスの信頼性目標"
  
  # SLI定義
  indicator:
    metadata:
      name: ai-response-quality
    spec:
      ratioMetric:
        counter: true
        good:
          metricSource:
            type: prometheus
            spec:
              query: |
                sum(rate(ai_response_total{
                  quality_score>0.85,
                  latency_ms<3000
                }[5m]))
        total:
          metricSource:
            type: prometheus
            spec:
              query: |
                sum(rate(ai_response_total[5m]))
  
  # SLO目標値
  objectives:
    - displayName: "品質付き応答成功率"
      target: 0.97        # 97%
      timeWindow:
        duration: 30d
        isRolling: true
    - displayName: "TTFT 500ms以内"
      target: 0.95        # 95%のリクエストが500ms以内
      timeWindow:
        duration: 7d
        isRolling: true
  
  # エラーバジェット管理
  budgetingMethod: Occurrences
  alertPolicies:
    - alertPolicyRef: burn-rate-multiwindow

⚠️ 注記: OpenSLO v1.2およびその qualityMetric 拡張については、執筆時点の情報に基づいています。実際のリリース状況や仕様はOpenSLOの公式リポジトリでご確認ください。

OpenSLO v1.2(2025年末リリース)ではAIサービス向けの qualityMetric 拡張が追加され、LLMの出力スコアを直接SLIとして取り込むことが可能になりました。

Time-to-First-Token(TTFT)の重要性

LLMサービスにおいてユーザー体験を最も左右するのは、ストリーミング応答における**最初のトークンが返ってくるまでの時間(TTFT)**です。

pie title LLMユーザー離脱の主要因(2026年調査)
    "TTFT 3秒超" : 38
    "品質が低い" : 27
    "応答途中のエラー" : 18
    "完全な無応答" : 12
    "その他" : 5

⚠️ 注記: 上記の数値は「2026年調査」として記載されていますが、調査元・調査方法が明記されていません。参考値としてご参照ください。

TTFTをSLIとして計測するPrometheusのカスタムメトリクス実装例:

# FastAPI + OpenTelemetry による TTFT 計測 (2026年推奨パターン)
from opentelemetry import metrics
from prometheus_client import Histogram
import time

TTFT_HISTOGRAM = Histogram(
    'llm_time_to_first_token_seconds',
    'Time to first token in LLM streaming response',
    buckets=[0.1, 0.3, 0.5, 1.0, 2.0, 3.0, 5.0, float('inf')],
    labelnames=['model', 'endpoint', 'region']
)

async def stream_with_sli_tracking(request, model_client):
    start_time = time.perf_counter()
    first_token_recorded = False
    
    async for chunk in model_client.stream(request):
        if not first_token_recorded and chunk.content:
            ttft = time.perf_counter() - start_time
            TTFT_HISTOGRAM.labels(
                model=request.model,
                endpoint=request.endpoint,
                region=request.region
            ).observe(ttft)
            first_token_recorded = True
        yield chunk

エラーバジェット管理の最新プラクティス:マルチウィンドウ・マルチバーンレート

2026年現在、エラーバジェットのアラート設計では「マルチウィンドウ・マルチバーンレート」が標準となっています。Google SREの推奨手法をベースに、AIサービス特有の非定常性に対応した拡張版が各社で採用されています。

バーンレートアラートの設定例

# Sloth v0.11(2025年12月リリース)によるバーンレートアラート定義
version: prometheus/v1
service: ai-platform
labels:
  team: sre
  criticality: high

slos:
  - name: ai-api-availability
    objective: 99.5
    description: "AI API 可用性SLO"
    
    sli:
      events:
        errorQuery: |
          sum(rate(http_requests_total{
            job="ai-api",
            code=~"5.."
          }[{{.window}}]))
        totalQuery: |
          sum(rate(http_requests_total{
            job="ai-api"
          }[{{.window}}]))
    
    alerting:
      name: AIAPIAvailabilityBurnRate
      labels:
        severity: critical
      annotations:
        summary: "エラーバジェット消費が加速しています"
      pageAlert:
        labels:
          severity: page
      ticketAlert:
        labels:
          severity: ticket

⚠️ 注記: Sloth v0.11のリリース時期は執筆時点の想定です。実際のバージョンや構文はSlothの公式ドキュメントでご確認ください。また、元のYAMLでキー名が slOs となっていましたが、Slothの仕様に合わせて slos に修正しています。

エラーバジェット消費の可視化

flowchart LR
    A[エラーバジェット 30日分] --> B{消費速度チェック}
    B -- "バーンレート > 14\n(1時間窓)" --> C[🔴 即時ページング\n残Budget<2%リスク]
    B -- "バーンレート > 6\n(6時間窓)" --> D[🟠 チケット起票\n残Budget<5%リスク]
    B -- "バーンレート > 3\n(1日窓)" --> E[🟡 Slack通知\n翌日MTG確認]
    B -- "バーンレート ≤ 3" --> F[🟢 正常範囲]

    C --> G[即時インシデント対応]
    D --> H[翌営業日中に対応]
    E --> I[週次レビューで確認]

エラーバジェットポリシーの自動執行

2026年現在、エラーバジェットの状態に応じたリリースゲートの自動制御がCI/CDパイプラインに組み込まれるケースが増えています。

# エラーバジェット残量に基づくデプロイ可否判定 (2026年型)
import requests
from enum import Enum

class BudgetPolicy(Enum):
    ALLOW_ALL = "allow_all"           # 残量 > 50%
    ALLOW_MINOR = "allow_minor"       # 残量 10〜50%
    FREEZE = "freeze"                 # 残量 < 10%
    EMERGENCY_ONLY = "emergency_only" # 残量 < 0%(バジェット枯渇)

def get_error_budget_policy(service: str, window_days: int = 30) -> BudgetPolicy:
    """
    Prometheusからエラーバジェット残量を取得し、
    デプロイポリシーを返す
    """
    query = f"""
    1 - (
      sum(increase(error_events_total{{service="{service}"}}[{window_days}d]))
      /
      (sum(increase(total_events_total{{service="{service}"}}[{window_days}d])) * 0.005)
    )
    """
    response = requests.get(
        "http://prometheus:9090/api/v1/query",
        params={"query": query}
    )
    budget_remaining = float(response.json()["data"]["result"][0]["value"][1])
    
    if budget_remaining > 0.5:
        return BudgetPolicy.ALLOW_ALL
    elif budget_remaining > 0.1:
        return BudgetPolicy.ALLOW_MINOR
    elif budget_remaining > 0:
        return BudgetPolicy.FREEZE
    else:
        return BudgetPolicy.EMERGENCY_ONLY

2026年のSLO管理ツール比較

2025〜2026年にかけてSLO管理ツールの選択肢は大きく拡充しました。特にAIサービス対応とGitOps連携の成熟度が選定のポイントになっています。

ツールバージョンAI SLI対応GitOps連携マルチクラウドOSS/商用特徴
Slothv0.11△(カスタム可)OSSPrometheusネイティブ、軽量
OpenSLO + Nobl9v1.2商用マルチソース、AIメトリクス標準対応
Reliablyv2.4商用LLMサービス向けテンプレート豊富
Pyrrav0.7OSSKubernetesネイティブ、シンプル
Grafana SLOv10.4+商用/OSSGrafana Cloud統合、UI優秀
Dynatrace SLO2026.Q1商用AI異常検知との統合が強力

⚠️ 注記: 上記の各ツールのバージョンや機能は執筆時点の情報です。実際の機能・対応状況は各ツールの公式ドキュメントでご確認ください。

2026年Q1時点で最も注目されているのは**Grafana SLO(Grafana 10.4+)**です。OpenSLOフォーマットのネイティブサポートと、GrafanaのダッシュボードエコシステムをそのままSLO管理に活用できる点が評価されています。

Grafana SLO 設定の簡単な例

# Terraform で Grafana SLO を管理(2026年推奨構成)
resource "grafana_slo" "ai_api_availability" {
  name        = "AI API 可用性"
  description = "AIチャットAPIの可用性SLO"
  
  objectives {
    window      = "30d"
    value       = 0.995  # 99.5%
  }
  
  query {
    type = "ratio"
    ratio {
      success_metric = "http_requests_total{job='ai-api', code!~'5..'}"
      total_metric   = "http_requests_total{job='ai-api'}"
    }
  }
  
  alerting {
    fastburn {
      annotation {
        key   = "summary"
        value = "高速バーンレート検出: {{$labels.slo}}"
      }
    }
    slowburn {
      annotation {
        key   = "summary"
        value = "低速バーンレート警告: {{$labels.slo}}"
      }
    }
  }
  
  label {
    key   = "team"
    value = "sre"
  }
}

SLO設計の組織的プロセス:ステークホルダーとの合意形成

技術的な実装と同様に重要なのが、SLOを組織として機能させるプロセスです。2026年のSRE成熟度の高い企業では、以下のプロセスが標準化されています。

SLO策定の推奨フロー

sequenceDiagram
    participant PM as プロダクトマネージャー
    participant SRE as SREチーム
    participant Dev as 開発チーム
    participant Biz as ビジネス側

    PM->>SRE: ユーザージャーニーの共有
    SRE->>SRE: クリティカルユーザージャーニー特定
    SRE->>Dev: 計測可能なSLI候補の洗い出し
    Dev->>SRE: テレメトリーデータ・実現可能性確認
    SRE->>Biz: SLO草案・コストトレードオフ提示
    Biz->>SRE: ビジネス要件・許容コスト合意
    SRE->>PM: 最終SLO合意・エラーバジェットポリシー確定
    PM->>Dev: ポリシーに基づくロードマップ反映

SLO設定時のよくある失敗と回避策

アンチパターン問題点2026年の推奨対策
可用性を99.99%に設定エラーバジェットが月4.3分のみ→運用不能実績データから逆算。99.5〜99.9%から始める
SLIをインフラ指標のみで設計ユーザー体験との乖離が生じるCUJ(クリティカルユーザージャーニー)起点で設計
SLOを設定して終わりバジェット消費に気づかない週次エラーバジェットレビューを義務化
SLOを増やしすぎ管理コスト過多、アラート疲弊サービスあたり3〜5個のSLOに絞る
AIサービスにレイテンシSLOのみ設定品質劣化を検出できないQuality SLIを必ず1つ以上追加する

まとめ

2026年のSLI/SLO設計は、AIサービス・マルチクラウド・ストリーミング処理という現代の複雑なシステムに対応するため、大きく進化しています。本記事のポイントを以下に整理します。

  • **SLIの4カテゴリ(Availability / Latency / Quality / Throughput)**を意識し、特にAIサービスではQuality SLIの組み込みが必須となっている
  • **TTFT(Time-to-First-Token)**はLLMサービスのユーザー体験を最も左右するSLIであり、PrometheusカスタムメトリクスとOpenTelemetryで計測可能
  • マルチウィンドウ・マルチバーンレートアラートが2026年の標準実装であり、Sloth・Grafana SLO・Nobl9などのツールで宣言的に管理できる
  • エラーバジェットポリシーのCI/CD自動執行により、バジェット枯渇時のリリース凍結を自動化し、信頼性とデリバリー速度のバランスを保てる
  • SLOは技術的な設定だけでなく、PM・ビジネス・開発・SREのクロスファンクショナルな合意形成プロセスがあって初めて機能する

次のアクションとして、まずは既存サービスの1つを選び、「クリティカルユーザージャーニー」を起点に3つのSLIを定義してみてください。完璧な設計より、計測・改善のサイクルを回し始めることが重要です。OpenSLO形式でSLO定義をGit管理することから始めると、チーム全体への普及がスムーズになります。

関連記事