こんにちは。運用開発グループの高橋です。
DevOpsの重要性が叫ばれて久しいですが、皆様はサービス改善に向けてどのような取り組みをされておりますでしょうか? 本記事では、自社サービスのWebサイト基盤におけるDevOpsの取り組みとして、データポータルを活用してSLI/SLOの可視化に取り組んだ事例をご紹介したいと思います。本記事では、以下の流れで取り組みの内容を記載していきます。
- サービスのSLI/SLOを設定する
- SLIの計測方法を検討・実装する
- SLI/SLOを可視化する
1.サービスのSLI/SLOを設定する
サービスの継続的な改善にはDevとOpsが改善を議論するための共通の指標が必要で、それがSLIとSLOになると考えています。 SLIとSLOに関する詳細説明は本記事では省略しますが、以下の定義で利用します。
- SLI:サービスレベル指標。サービスレベルを定義するために利用する指標そのもの。
- SLO:サービスレベル目標。SLIに対して定量的な目標値を定めたもの。
※SLI/SLOの定義に関しては、詳しくはこちらをご参照ください。
SLI | SLO |
アクセス成功率① 以下をエラーとした場合のアクセス成功率 ・HTTPステータスコードが500番台 | 99.90% |
アクセス成功率② 以下をエラーとした場合のアクセス成功率 ・HTTPステータスコードが500番台 ・HTTPステータスコードが400番台 | 99.00% |
高速なアクセスの割合① 以下を高速なアクセスとした場合の割合 ・レイテンシが1500ms未満 | 80.00% |
高速なアクセスの割合② 以下を高速なアクセスとした場合の割合 ・レイテンシが400ms未満 | 40.00% |
サービスの稼働率のみ(稼働率99.99%等)を目標として設定し、システムを運用しているケースもあるかと思いますが、”サービスが提供するユーザーへの価値”を測るための指標として十分か?を考えることが重要だと思います。
今回のWebサイトを例にとると、Webサイトの稼働率が99.99%であったとしても、ユーザがアクセスした際の画面描画に10秒(極端ですが)かかるようではユーザは不満に感じるかと思います。
SLIは”サービスが提供するユーザーへの価値”をもとに設定し、その指標を改善していけばサービスの提供価値も向上していく、という姿を目指すべきだと考えています。
また、SLIを設定するにあたり、システムの構成を踏まえてSLIとして計測可能そうか?という点も合わせて考えておく必要があります。
2.SLIの計測方法を検討・実装する
SLIを設定したら、設定したSLIをどのようにシステムのデータから算出するのかを検討・実装する段階に移ります。
本記事で扱う自社WebサイトのシステムはGoogle Cloud Platform (GCP)で構築されており、フロントエンドとしてはGoogle Cloud Load Balancing (GCLB) を利用しております。
システムの各種ログはBigQueryに集約しており、GCLBのデータもBigQueryに格納される設計としています。
SLIは、フロントエンドであるGCLBの以下メトリクスを使って計測することとしました。
- アクセス成功率:httpRequest.status
- 高速なアクセスの割合:httpRequest.latency
(ご参考)LogEntry
3.SLI/SLOを可視化する
SLIを算出しても、それが見える状態になっていないことにはサービスの改善に活かせません。
SLI/SLOの可視化に特化したサービスもありますが、今回は無料で利用できること、且つGCPとの親和性が高いことから、BIツールであるデータポータルで可視化を行いました。
データポータルは、Googleコネクタとして各種データソースに簡単に接続できる機能が提供されており、BigQueryにも簡単に接続可能です。画面に従って設定するだけで、BigQueryのデータを簡単にデータポータルで可視化できるようになります。
(ご参考)Google BigQuery に接続する
作成したダッシュボードは以下の画面構成(一部白抜きしております)になっており、SLIの4指標は画面右上の期間を設定することで実測値が表示されるようになっています。
SLOはテキストで目標値を埋め込んでいるだけであり、定期的にSLIの実測値を振り返りながら見直しを図っていこうと思っています。
本記事では、自社サービスのWebサイト基盤におけるDevOpsの取り組みとして、データポータルを活用してSLI/SLOの可視化に取り組んだ事例をご紹介しました。この記事が、皆さまがサービス改善を考えるきっかけになると嬉しいです。