🍱

SLOについて学ぶ

2022/09/07に公開

概要

WEB+DB PRESS Vol.130 プロダクト開発に必要なモニタリングの始め方の章を読んでの備忘録

用語

  • SLI(Service Level Indicator)
    • サービスの信頼性の定量的な指標
      • APIのエラー率
      • S3のようなストレージのようなデータ耐久性(11 9s)
      • バッチの成功比率
      • レスポンスのレイテンシ
  • SLO(Service Level Objective)
    • サービスの信頼性の目標値で、割合で表現される
      • 500ミリ秒以下でレスポンスを返せる割合が99%以上であること
      • APIの正常応答が99%以上であること
    • SLOが期待値を下回った場合、バグフィックスやパフォーマンス改善以外のデプロイを禁止する
  • エラーバジェット(エラーを許容できる猶予)
    • エラーの予算で「100% - SLI = エラーバジェット」という数式が成立する
      • ex. APIのSLOが99%であれば、エラーバジェットは1%
    • エラーバジェットを使い切ってしまったら、値が改善するまで改善活動を行うこと
  • ウインドウサイズ
    • SLOやエラーバジェットを計算するための期間のこと
    • 1日よりも30日の方が改善活動に余裕が出る
    • ex. ウインドウサイズが30日の場合、30日 x 1% = 432分 はエラーになってもよいよう事前に確保しているという意味

サービスで考えて置かないといけないこと

  • サービスに適したSLOとSLIとは何かをドキュメントにまとめておく
  • SLOが期待値を下回った時にメンバーがドキュメントの方針に沿って行動できるようにすること
    • SLOは高ければ高いほど良いというものではない(エラーバジェットを食いつぶすリスクが高まり開発速度が低下するから)
  • SLIをモニタリングして検知できる仕組みが備わっていること

定期的な改善活動

  • ステークホルダー間(開発、運用、マネージャー)での認識を揃えておくこと
  • エラーバジェットを使い切る前にアラートを通知できるようにしておくこと
  • SLOの推移を観測し、SLOの見直しを定期で実施すること

SLO Docsの作成

サンプル

SLOやSLIが決まった背景を明記しておくこと
OpenSLOという規格が出来上がったので、今後標準化が進むと推測される

Discussion