コンポジットSLA計算: 複数サービスSLAの組み合わせ
アプリケーションが複数のサービスに依存する場合のコンポジットSLA計算方法を学びます。直列および並列依存モデルを実例で理解します。
SRE Practices
詳細な説明
コンポジットSLAとは?
アプリケーションが複数のサービス(データベース、キャッシュ、メッセージキュー、CDN)に依存する場合、全体的な可用性はこれらの依存関係の組み合わせ方によって決まります。
直列依存(AND)
サービスが直列に接続されている場合 — すべてが利用可能でなければシステムが動作しない — SLAを掛け合わせます:
コンポジットSLA = SLA_A x SLA_B x SLA_C
例: Webアプリ → API → データベース
| コンポーネント | SLA |
|---|---|
| Webサーバー(EC2) | 99.99% |
| APIレイヤー(ECS) | 99.99% |
| データベース(RDSマルチAZ) | 99.95% |
コンポジット = 0.9999 x 0.9999 x 0.9995 = 0.9993 = 99.93%
並列依存(OR)
冗長サービスが並列の場合 — 少なくとも1つが利用可能ならシステムが動作:
コンポジットSLA = 1 - (1 - SLA_A) x (1 - SLA_B)
2つの99.9%コンポーネントを並列にすると、その特定の機能で99.9999%(シックスナイン)が得られます。
重要な洞察
並列冗長性の追加は可用性を劇的に向上させますが、すべての直列依存はそれを低下させます。最も弱い直列リンクがコンポジットSLAを支配します。
ユースケース
マルチティアアーキテクチャの設計、顧客とのSLAコミットメント交渉、可用性ボトルネックの特定、最大の効果を得るための冗長性追加場所の決定時にコンポジットSLA計算を使用します。