SLO Docsの運用をやってみて得られた知見など
自己紹介
はじめまして、GMOペパボでSREをやっている渡部龍一(X: ryuichi_1208)です。業務以外ではSRE Nextのスタッフをやっています。普段は障害対応をしたりEOL対応をやったりしています。
この記事では、SLODocsの運用を1年ほど前に開始しました。本記事では実際に運用してみて得られた知見を共有します。
SLO Docsとは
「Service Level Objectives」に関連する文書です。内容は「なぜSLI/SLOが必要なのか」や「具体的な目標値」、「関連しているチームや変更のためのステップ」等をステークホルダー間で合意を取った上で運用しているドキュメントとなります。
WEB+DB PRESS Vol.130の中で取り上げらている「【第2回】プロダクト開発に必要なモニタリングの始め方……SLOを定義し,SLIを実装しよう」を参考に我々のサービス向けにアレンジした内容となっています。
SLO Docsの例
実際には以下のようなドキュメントを書いて運用しています。
- 概要
- SLI(サービスレベル指標)とSLO(サービスレベル目標)の基本的な概念と、それらがどのように運用されているかについての説明が含まれます
- このセクションでは、これらの指標と目標が組織にとってどのような意味を持つのか、どのようにして設定されるのかを記載しています
- エンジニア以外のステークホルダー向けの説明も兼ねています
- SLI/SLO
- 各サービスごとの具体的なサービスレベル指標と目標が記載されます。これには、パフォーマンス、可用性、レスポンス時間など、測定されるべき具体的な指標が詳細に説明しています
- 目的/目的としないこと
- SLIとSLOを定める目的と、これらの目標によって達成しようとしていること、そして意図していないことを記載しています。
- これにより、目標の設定がなぜ重要なのか、どのような効果が期待されるのかが明確になります。
- エスカレーションポリシー
- SLOが違反された場合の対応策が記載されます。
- これには、どのような状況でエスカレーションが発生し、チームがどのように対応するかを決めています。
- SLI/SLOを変更するには
- SLIやSLOの変更が必要になった場合の手順が説明されます。これには、変更の提案、評価、承認プロセスが含まれます。
- リンク
- 構成図やサービスの概要などを記載しています
導入してみて
導入して1年程度が経ったのでそこで得られた知見や具体的なアクションについてを記載します。
チーム間のコミュニケーションと協調性の向上
具体的なSLOを設定することで、異なるチーム間での期待が明確になり、コミュニケーションが改善されました。ドキュメントはPull Requestベースで変更がされており設定背景や議論の内容を追うのも比較的容易になるというメリットもありました。
ドキュメントとして残すことで得られたメリット
SLI/SLOを設定して運用をしていると「なぜこの数値なんだっけ?」や「設定した値を見直さなくていいんだっけ?」という疑問が出たりします。そういう時にSLO Docsがあると設定した理由を振り返ったり、見直す時期が明確になるというメリットがあります。メンバーの入れ替わりでもドキュメントを読むことで背景等を知ることができるようになりました。
まとめ
SLO Docsを導入して1年で得られた知見等をまとめて見ました。運用してみて良かったのはやはり合意が取られた内容が一つの場所にまとまっているという体験です。運用しているサービスの特性上複数チームが複数の手法でドキュメント管理をやっているのですが「SLI/SLOについてはここ」というのが決まっているのでドキュメントに辿り着くまでの時間が短く済むのはとても良かったです。
今後やりたいこととしてはこのドキュメントを元にアラートやグラフの設定を自動化できればなと思っています。SLI/SLOを設定した後には可視化ツールへの反映やアラート設定は手動で行なっているためドキュメントの修正とそれらの修正はセットとなっており若干の手間となっています。こういった手間を減らしていければ良いなと思っています。 (OpenSLOあたりの導入ができるかなと考えていますがまだ取り組めてはいないので知見ある方いればぜひXなりでコメントいただければと!)