SLOとSLI
🔥 Vibe プロンプト
「APIサービス用のSLIとSLOを定義:可用性99.9%、レイテンシp99 <500ms。エラーバジェットを設定。」
SLI(サービスレベル指標)
可用性SLI = 成功リクエスト / 総リクエスト × 100
レイテンシSLI (p99) = histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))
SLO(サービスレベル目標)
objectives:
- name: 可用性
target: 99.9%
measurement_window: 30d
- name: レイテンシp99
target: 500ms
measurement_window: 30d
エラーバジェット
エラーバジェット = 1 - SLO
例: SLO = 99.9% → エラーバジェット = 0.1% = 月43.2分
目的: どれだけのダウンタイムが「許容」されるか?
エラーバジェット消費 → デプロイ停止(信頼性優先)
バーンレートアラート
alert: HighErrorBudgetBurn
expr: (1 - (sum(rate(http_requests_total{status!~"5.."}[1h])) / sum(rate(http_requests_total[1h])))) > 0.001
labels: { severity: critical }
ベストプラクティス
- サービスごとに2-3の主要SLIから開始
- SLOは達成可能値より若干低く設定
- エラーバジェット = デプロイ速度の調整弁
- SLO違反ではなくバーンレートでアラート
章のまとめ
- コアコンセプトと原理を理解
- 実装方法とテクニックを習得
- 一般的な問題と解決策に精通
- 実際のプロジェクトに適用可能
さらに読む
- 公式ドキュメントとAPIリファレンス
- GitHubのオープンソース例
- 技術書とオンラインコース
- コミュニティディスカッションと技術ブログ
実装例
基本例
# 完全な実装例を提供します
手順
- セットアップ: 開発環境の設定
- データ: 必要なデータの準備
- 実装: コア機能の構築
- テスト: 動作確認
- 最適化: パフォーマンスの向上
よくあるエラー
| エラー種別 | 原因 | 解決方法 | |-----------|------|---------| | コンパイル | 構文 | コードの構文を確認 | | 実行時 | 環境 | 依存パッケージの確認 | | 論理 | アルゴリズム | ステップごとのデバッグ | | パフォーマンス | 効率 | プロファイラーの使用 |
コード例
import sys
def main():
print("Hello, World!")
if __name__ == "__main__":
main()
参考資料
- 公式ドキュメント
- APIリファレンス
- オープンソース例
- コミュニティディスカッション