プロダクトのSLO活用方法を公開。アソビュー!が実践する策定からモニタリングまでのプロセス

こんにちは、アソビュー開発チームの山内と申します。

早いもので、今年も半年が経とうとしています。 皆様、今年の目標はございますでしょうか? 私は、フルマラソンを完走することです。

しっかりと目標を達成するために、まずは怪我している肉離れの治療に専念しようと思います。(今年3回目の肉離れ)

さて、今回はアソビューで行っているSLOの活用について紹介します。

なぜSLOの活用を行ったのか

アソビュー!では、以下の記事にもあるように可用性に対して真摯に取り組んでおります。

tech.asoview.co.jp

一方、更に世の中に価値を届けるために、新規機能の開発等も必要になっていきます。 そうしたときに、プロダクトとしての攻めと守りのバランスが大切になると考えています。

今までは、攻めと守りどちらに入るべきかの判断は、様々な状況に応じて話し合いを行うことで、攻守のバランスを決定していきました。 このサイクルだと、どうしても判断するまでに時間がかかり、最終決定のスピードが遅くなります。 また、定性的な材料しかないため、判断がつきにくい状態になります。

そこで、現場の開発チームとPdMが明確に判断できるようにし、正しく攻守のバランスを決定できるようにするために、具体的な判断指標(SLO)を定めることにしました。

SLI、SLOとは

SLIとは

SLIとは、Service Level Indicator(サービスレベル指標)の略です。

サービスの信頼性に関するユーザー体験を対象にした具体的な測定値になります。 私達は、以下の3つの指標を策定しています。

  • Uptime(稼働時間) 正常稼働している時間の割合

  • Availability(可用性) リクエストが正常に行えている割合

  • Latency(応答時間) リクエストに対するレスポンスまでの時間

SLOとは

SLOとは、Service Level Objective(サービスレベル目標)の略です。

上記に示したSLIに対して、具体的な目標数値を定めたものになります。

SLOの策定

運用するにあたり、以下のプロセスで開発チームとPdMで話し合い、SLOを定めました。

1. エンドポイントのグルーピング

まず、エンドポイントを全て洗い出します。 そして、洗い出したエンドポイントをグルーピングしていきます。

ここでのグルーピングは、内部の実装詳細によるものではなく、実際のユーザー体験に沿ったものをまとめていきます。 例えば、「ログインをする」や「検索をする」のようなものです。

実際のユーザーの行動に沿ったグルーピングを行うことで、ユーザーの期待値に対する目標の設定ができます。

2.ターゲットの絞り込み

次に、モニタリングするグループの絞り込みを行います。

SLOは攻めと守りの指標の数値です。下回った際には、その課題解決を取り組む必要があります。

もちろん全ての機能が大切ですが、判断を明確にするためにユーザー行動の中でも更に重要な行動に絞り、モニタリング対象を決めていきました。 アソビュー!では、「予約をする」や「新規会員登録をする」など、モニタリング対象にするグループを絞り込みました。

3.具体的な数値の決定

最後に、各グループに対する各SLIの目標数値を決めます。

ここで重要になるのが、目標数値は、ユーザーの信頼性の指標の定義になるという点です。

例えば、ログインリクエストに対して10sかかるサービスはどう感じますか? きっとログイン完了まで待てず、ブラウザを閉じる方が多いと思います。 このような状態はサービスの信頼性が高いとは言えません。

ユーザーの行動に対して、信頼性が高い状態はどういう状態なのかを定義し、目標数値を定めていきました。

SLOダッシュボード

各グループとSLOを定めたら、モニタリングするためのダッシュボードを作成します。

SLOダッシュボード

Datadogを用て、1週間単位のSLOのモニタリングや各機能に対するSLO達成目標比率を定め、可視化していきました。

モニタリングサイクル

SLOダッシュボードをもとに、1週間のサイクルでモニタリングを行います。 具体的なフローは、以下です。

SLOモニタリングサイクル

週に1回、開発チームで集まりSLOダッシュボードの確認をしています。 そこで、問題があれば原因の調査とダッシュボード自体の設定の不備を確認します。

設定の不備がない場合、問題に対する対策の決定を開発チームとPdMで行い、決めた方針に沿って改修を行います。

私達は、こういったサイクルを毎週繰り返してサービスの信頼性のモニタリングを行い、プロダクトの攻守のバランスを取っています。

まとめ

今回は、私達が実際に行っているSLO活用を紹介しました!

実際に行ってみて、重要なポイントと感じた点は以下です。

  • プロダクトの内部構造にとらわれず、ユーザーの信頼性の視点で考えること
  • サイクルを等間隔で回し続けること
  • 常にSLOモニタリングの改善ポイントを考え、改善し続けること

SLOモニタリングの基盤はできたものの、まだまだ改善の余地はあると思っています。 日々のモニタリングを通して、改善とリリースを繰り返すことで更に信頼性の高いサービスを目指してまいります。

今回の記事が、これからSLO策定に取り組む方や運用している方の参考になれば幸いです。

最後に

アソビューでは「生きるに、遊びを。」をミッションに、一緒に働くメンバーを募集しています!

ご興味がありましたらお気軽にご応募お願い致します!

www.asoview.com