LESSON 15分

ストーリー

あなた
“うちのシステムは安定してます”って、それ何を根拠に言ってるの?

高橋アーキテクトの問いに、あなたは言葉に詰まった。

高橋アーキテクト
“安定している”を数値で定義できなければ、それは感覚でしかない。SLI、SLO、SLAという3つの概念を使って、サービスの信頼性を定量的に管理しよう

SLI / SLO / SLA の関係

SLA(Service Level Agreement)  ← 契約(外部への約束)

  └── SLO(Service Level Objective)  ← 目標(内部の目標値)

        └── SLI(Service Level Indicator)  ← 指標(実測データ)

SLI(Service Level Indicator)

SLIは、サービスの品質を測る指標です。

// 代表的なSLI
interface SLIDefinitions {
  // 可用性: 成功したリクエストの割合
  availability: {
    formula: 'successful_requests / total_requests';
    example: '99,700 / 100,000 = 99.7%';
  };

  // レイテンシ: リクエストの応答時間
  latency: {
    formula: 'requests_below_threshold / total_requests';
    example: 'P99 < 300ms のリクエストが全体の 99.5%';
  };

  // エラー率: エラーレスポンスの割合
  errorRate: {
    formula: 'error_requests / total_requests';
    example: '300 / 100,000 = 0.3%';
  };

  // スループット: 単位時間あたりの処理量
  throughput: {
    formula: 'requests_per_second';
    example: '1,000 req/s';
  };
}

SLO(Service Level Objective)

SLOは、SLIに対する目標値です。

// SLOの定義例
interface SLODefinition {
  name: string;
  sli: string;
  target: number;       // 目標値(%)
  window: string;        // 計測期間
  errorBudget: number;   // エラーバジェット
}

const sloExamples: SLODefinition[] = [
  {
    name: 'API可用性',
    sli: 'successful_requests / total_requests',
    target: 99.9,              // 99.9%
    window: '30日間ローリング',
    errorBudget: 0.1,         // 0.1% = 約43分/月のダウンタイム許容
  },
  {
    name: 'APIレイテンシ',
    sli: 'requests_under_300ms / total_requests',
    target: 99.5,
    window: '30日間ローリング',
    errorBudget: 0.5,
  },
];

エラーバジェット

エラーバジェットは「SLO目標を達成しながら許容できるエラーの量」です。

SLO目標月間ダウンタイム許容エラーバジェット
99.0%約7時間12分1.0%
99.9%約43分0.1%
99.95%約22分0.05%
99.99%約4.3分0.01%

SLA(Service Level Agreement)

SLAは、顧客との契約で約束するサービスレベルです。SLOより低い値に設定し、違反時にはペナルティが発生します。

SLI(実測値): 99.95%
SLO(内部目標): 99.9%     ← SLIがこれを下回ったら対策を開始
SLA(外部約束): 99.5%     ← SLIがこれを下回ったら契約違反

まとめ

概念役割
SLI測定する指標成功率、レイテンシP99
SLO内部の目標値可用性 99.9%/月
SLA外部との契約可用性 99.5%/月(違反時は返金)

チェックリスト

  • SLI、SLO、SLAの違いを説明できる
  • エラーバジェットの考え方を理解した
  • SLOをSLAより高く設定する理由を理解した

次のステップへ

Step 1の理解度チェッククイズに挑戦しましょう。


推定読了時間: 15分