CNDT 2022、SLOの自動化についてGoogleのエンジニアが解説
CNDT 2022から、Google合同会社の山口 能迪(やまぐち よしふみ)氏によるセッションを紹介する。タイトルは「SLO策定のIaC化によるSREの加速」となっている。
まずはSRE(Site Reliability Engineering)の定義について触れ、「本番システムを信頼性高く開発、運用するための一連のプラクティスと心構え、及び職務を指す」であると解説。その上で、ビジネスのコンセプトを満たすためのアプリケーションやIT資源について、開発から運用に至るまでに満たすべき目標を設定して、それを達成するために開発チームも運用チームもSREも活動することであると説明した。
ここでSREの大きなコンセプトであるSLO(Service Level Objective)とエラーバジェットについても説明を行った。
ここでは90%の可用性を目標に挙げた場合、1ヶ月に約3日は稼働しないことが許されるとして、これをエラーバジェットと定義する。その範囲であれば新機能開発も進められるし運用の自動化の試みも可能になるが、この予算を使い切った場合は、可用性を上げるための業務、バグを修正するなどに専念する必要があると解説した。
ここからSLOとSLI(Service Level Indicator)を策定するための標準的なフローを説明。具体的なフェーズを解説した。
最初のステップ、そのサービスの価値を確認してそれを弾き出す一連の手順を「クリティカルユーザージャーニー(CUJ)」として整理する部分を解説した。この場合、直接エンドユーザーが操作するだけではなく他のシステムから呼び出される場合も想定すると言うのが注意点だろう。
具体的な例として、ATMの利用例やユーザーがWebにアクセスして反応が返ってくるまでの時間を挙げて説明。
ここでは、Avatar画像よりプロファイルデータをJSONで受け取るまでの時間が最もクリティカルであるという例を説明した。
またSLIの設定についての方程式、典型的なSLIの例などについても解説を行った。
SLOの設定についてSLIはシステムが示す数値であり、SLOはその数値に期間をかけ合わせたものとなると説明。ここでは99.5%のアクセスが28日間の期間内で成功することと解説した。
また現在のシステムではOSやランタイム、マネージドサービスの場合はログやメトリクスなどのテレメトリー情報を収集しやすくなっているが、アプリケーションについては別途検討する必要があることを説明。アプリケーションからログ、メトリクス、トレース、プロファイル、エラーレポートをどうやって取得するのか? その頻度によってはシステムに負荷が発生する場合も想定し、またテレメトリーデータをどうやって保存するのかなどについても考慮が必要だと解説した。
またエラーバジェットについても消費してからアラートを上げるのではなく、その消費の傾向から事前に警告を上げる仕組みが必要だと説明し、エラーバジェットを消費する傾向を数値化するバーンレートについても解説を行った。
最後にSLO/SLIについては定期的に見直す必要があり、本当にユーザーがその数値に満足しているのか? を定期的に確認するようにと説明した。
ここからはSLOとSLIの見直しのサイクルに付随して、その変更をマニュアルで行うのではなく、自動化するための方法としてIaC化について解説を行った。これはSLO/SLIが少ない場合はマニュアルでも問題ないが、それが数百以上存在するような企業においては自動化が必須であるとして、いかにも自動化が好きなGoogleらしい発想の内容となった。
このプロセスにおいて、自然言語で書かれるSLO/SLIの定義の部分が自動化のハードルになることを紹介。ここはビジネスサイドと同意が必要な部分となるため、どうしてもITシステム以外の人間が理解できる表現内容になることを示している。
ここからはSLOの部分の自動化に向けた課題として、自然言語で書かれることと標準化ができていないことを挙げて、2つのツールについて解説を行った。SLOのIaC化ツールとして例に挙げたのは、Googleのプロフェッショナルサービス部門が開発するオープンソースのツールSLO GeneratorとNobl9が開発するOpenSLOだ。
ここではCLIで利用できるため、インフラ設定の自動化の中に組み込んでの利用も可能であると説明された。
OpenSLOはスキーマのみを定義しているため、他のツールを用いて実装するためにはそのフォーマットを読み込んでツールの設定データに変換する必要があることを解説。例としてPrometheus/Grafanaの定義に変換するSlothを紹介した。
ここまででSLO/SLIの概要からそれをIaCとして自動化するためのツールの紹介までを行った。最後にまとめとして、SLOベースのIaCはまだこれから確立されていく領域であること、ツール自体も未成熟であること、SLOの標準フォーマットがOpenSLOベースになりそうなことなどを紹介してセッションを終えた。
ビジネスゴールを自然言語で表現してしまう部分をどうやってシステムのテレメトリーシステムやダッシュボードと繋げるのか? については、今後、大きな進歩があると感じさせる内容となった。この領域を引き続き注目していきたいと感じさせるセッションであった。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- CNDT 2022、ChatworkのSREがSLO策定にカオスエンジニアリングを使った経験を解説
- Observability Conference 2022、オブザーバビリティから組織、ルールを見直した事例を紹介
- Observability Conference 2022、利用者目線のオブザーバビリティ実装をドコモのSREが解説
- CloudNative Days Tokyo 2023から、Yahoo! JAPANを支えるKaaS運用の安定化やトイル削減の取り組みを紹介
- CNDT 2022、DMMのアーキテクトが解説するSREと開発の責任境界とリソース管理の実際
- Cloud Operator Days Tokyo 2021開催、New Relicとドコモのセッションを振り返る
- CNDT2020シリーズ:メルペイのマイクロサービスの現状をSREが解説
- CI/CDから障害の復旧までハイレベルの運用自動化を実現するKeptnとは
- CI/CD Conferenceレポート トレジャーデータのCI/CDのポイントはリリースリスクの最小化
- CNDT2021、パブリッククラウドを使ってゼロから勘定系を開発したみんなの銀行のセッションを紹介