CNDT 2022、SLOの自動化についてGoogleのエンジニアが解説

2023年6月15日(木)
松下 康之 - Yasuyuki Matsushita
システムの運用を可視化するSLO/SLIをIaCによって自動化する仕組みの現状をGoogleのエンジニア解説したセッションを紹介する。

CNDT 2022から、Google合同会社の山口 能迪(やまぐち よしふみ)氏によるセッションを紹介する。タイトルは「SLO策定のIaC化によるSREの加速」となっている。

●動画:SLO策定のIaC化によるSREの加速

まずはSRE(Site Reliability Engineering)の定義について触れ、「本番システムを信頼性高く開発、運用するための一連のプラクティスと心構え、及び職務を指す」であると解説。その上で、ビジネスのコンセプトを満たすためのアプリケーションやIT資源について、開発から運用に至るまでに満たすべき目標を設定して、それを達成するために開発チームも運用チームもSREも活動することであると説明した。

ビジネスとして提供された際にITシステムの実行目標を設定して守ることがSREの役割

ビジネスとして提供された際にITシステムの実行目標を設定して守ることがSREの役割

ここでSREの大きなコンセプトであるSLO(Service Level Objective)とエラーバジェットについても説明を行った。

SLOとエラーバジェットについて具体的な例を挙げて説明

SLOとエラーバジェットについて具体的な例を挙げて説明

ここでは90%の可用性を目標に挙げた場合、1ヶ月に約3日は稼働しないことが許されるとして、これをエラーバジェットと定義する。その範囲であれば新機能開発も進められるし運用の自動化の試みも可能になるが、この予算を使い切った場合は、可用性を上げるための業務、バグを修正するなどに専念する必要があると解説した。

ここからSLOとSLI(Service Level Indicator)を策定するための標準的なフローを説明。具体的なフェーズを解説した。

SLOを策定するためのフロー

SLOを策定するためのフロー

最初のステップ、そのサービスの価値を確認してそれを弾き出す一連の手順を「クリティカルユーザージャーニー(CUJ)」として整理する部分を解説した。この場合、直接エンドユーザーが操作するだけではなく他のシステムから呼び出される場合も想定すると言うのが注意点だろう。

CUJの洗い出しと目標値の設定

CUJの洗い出しと目標値の設定

具体的な例として、ATMの利用例やユーザーがWebにアクセスして反応が返ってくるまでの時間を挙げて説明。

ユーザープロファイルをアクセスする例からデータ交換の詳細を突き詰める

ユーザープロファイルをアクセスする例からデータ交換の詳細を突き詰める

ここでは、Avatar画像よりプロファイルデータをJSONで受け取るまでの時間が最もクリティカルであるという例を説明した。

またSLIの設定についての方程式、典型的なSLIの例などについても解説を行った。

データ交換、データ処理、ストレージなどのSLIの例を紹介

データ交換、データ処理、ストレージなどのSLIの例を紹介

SLOの設定についてSLIはシステムが示す数値であり、SLOはその数値に期間をかけ合わせたものとなると説明。ここでは99.5%のアクセスが28日間の期間内で成功することと解説した。

エラーバジェットを具体例で説明

エラーバジェットを具体例で説明

また現在のシステムではOSやランタイム、マネージドサービスの場合はログやメトリクスなどのテレメトリー情報を収集しやすくなっているが、アプリケーションについては別途検討する必要があることを説明。アプリケーションからログ、メトリクス、トレース、プロファイル、エラーレポートをどうやって取得するのか? その頻度によってはシステムに負荷が発生する場合も想定し、またテレメトリーデータをどうやって保存するのかなどについても考慮が必要だと解説した。

またエラーバジェットについても消費してからアラートを上げるのではなく、その消費の傾向から事前に警告を上げる仕組みが必要だと説明し、エラーバジェットを消費する傾向を数値化するバーンレートについても解説を行った。

バーンレートの解説。消費する前に警告を上げる仕組みが必要

バーンレートの解説。消費する前に警告を上げる仕組みが必要

最後にSLO/SLIについては定期的に見直す必要があり、本当にユーザーがその数値に満足しているのか? を定期的に確認するようにと説明した。

ここからはSLOとSLIの見直しのサイクルに付随して、その変更をマニュアルで行うのではなく、自動化するための方法としてIaC化について解説を行った。これはSLO/SLIが少ない場合はマニュアルでも問題ないが、それが数百以上存在するような企業においては自動化が必須であるとして、いかにも自動化が好きなGoogleらしい発想の内容となった。

SLO/SLIの設定からテレメトリー実装を解説

SLO/SLIの設定からテレメトリー実装を解説

このプロセスにおいて、自然言語で書かれるSLO/SLIの定義の部分が自動化のハードルになることを紹介。ここはビジネスサイドと同意が必要な部分となるため、どうしてもITシステム以外の人間が理解できる表現内容になることを示している。

目標の設定をビジネスオーナーが理解できる言語で記述する点が自動化の妨げ

目標の設定をビジネスオーナーが理解できる言語で記述する点が自動化の妨げ

ここからはSLOの部分の自動化に向けた課題として、自然言語で書かれることと標準化ができていないことを挙げて、2つのツールについて解説を行った。SLOのIaC化ツールとして例に挙げたのは、Googleのプロフェッショナルサービス部門が開発するオープンソースのツールSLO GeneratorとNobl9が開発するOpenSLOだ。

SLO Generatorの説明

SLO Generatorの説明

ここではCLIで利用できるため、インフラ設定の自動化の中に組み込んでの利用も可能であると説明された。

OpenSLOの説明

OpenSLOの説明

●参考:OpenSLOのオフィシャルサイト

OpenSLOはスキーマのみを定義しているため、他のツールを用いて実装するためにはそのフォーマットを読み込んでツールの設定データに変換する必要があることを解説。例としてPrometheus/Grafanaの定義に変換するSlothを紹介した。

Slothの紹介

Slothの紹介

ここまででSLO/SLIの概要からそれをIaCとして自動化するためのツールの紹介までを行った。最後にまとめとして、SLOベースのIaCはまだこれから確立されていく領域であること、ツール自体も未成熟であること、SLOの標準フォーマットがOpenSLOベースになりそうなことなどを紹介してセッションを終えた。

ビジネスゴールを自然言語で表現してしまう部分をどうやってシステムのテレメトリーシステムやダッシュボードと繋げるのか? については、今後、大きな進歩があると感じさせる内容となった。この領域を引き続き注目していきたいと感じさせるセッションであった。

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

クラウドイベント
第16回

CNDT 2022、ChatworkのSREがコンテナセキュリティのための新しいツールを紹介

2023/6/23
ChatworkのSREがOPAを使ったコンテナセキュリティの実装例を解説したセッションを紹介する。
ストレージイベント
第15回

CNDT 2022、サイボウズのストレージアーキテクトが企業からOSSへの貢献を継続する仕組みを解説

2023/6/22
サイボウズのアーキテクトがRook/Cephのメンテナー経験を活かしてOSSへの貢献を継続する秘訣を解説したセッションを紹介する。
クラウドイベント
第14回

CNDT 2022、ArgoCDとGitHub Actionsの導入でリリース時間を1/4に削減した事例を紹介

2023/6/19
ChatworkのエンジニアがJenkinsからArgoCD/GitHub Actionsに移行してリリース時間を削減した事例を解説したセッションを紹介する。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています