はじめに
STORESでエンジニアをしているtommyです。
直近は、STORES レジ というプロダクトの開発に携わっています。
STORES レジ を開発しているPOSレジグループは、今年のはじめにできた組織です。 新しい組織には元々レジアプリに関わったことがないメンバーもおり、プロダクトへの理解度がバラバラな状態でした。
そのため、これからチームで運用していくためにも、まずはプロダクトの健康状態を把握していきたいという話をしていました。
そこで、この記事ではチームで行っているプロダクト監視の取り組みを紹介します。
Datadog での Dashboard の作成
前述の状態からチームを作っていくところから始まったため、まずは通常時のシステムの状態を把握し、異常時にそれが異常な状態であるとわかることを目的としました。
そこで、Datadog の Dashboard の機能を利用して、プロダクトの Dashboard ページを作成しました。
STORES レジ ではGraphQLを採用しているので、どのqueryやmutationが多く実行されているのか、実行に時間がかかっているかなどを見られるようにしています。 加えて、全体のリクエスト数やレイテンシ、エラーの発生状況といった指標も追加しています。
少しずつ変更を加えていきながら現在の形になっています。
しかし、プロダクトにおける指標は数多くあるので、最初は最小限の項目でDashboardを作成し、定期的にチームで会話しながら見ていきながら必要な項目を追加していくのが良いかなと思います。
Dashboard の活用
定期的なシステム監視での活用
私たちのチームでは、チームで話したいトピックを各メンバーから持ち寄って話をするMTGを隔週で行っています。
このMTGを活用し、はじめにDashboardを見て直近の状況を確認するようにしています。
もちろん、何か異常な状態が発生していそうな際は、その都度システムの監視や調査なども行っていますが、定期的にチームで話しながら見ていく場として活用しています。
定期的に見ることで通常時の状態がざっくりとわかっているので、それに対して何かグラフが跳ねていたり、いつもと違う指標がないか、という観点で見ることができます。
また、前回のMTGからの間にアプリのリリースなどがあれば、その前後で変化がないかなどを気にして見ています。
弊社では、エンジニア以外のメンバーも使用するデータ分析のツールとして Metabase を使っているので、関連する指標をまとめているリンクを追加したりしています。
定期的に見ていく中で、改善できそうな箇所が話しながら出てきたら、別途 issue を作成し改善をする場にもなっています。
また、iPadのレジアプリ上で発生しているエラーやクラッシュの情報は、現在Datadogに統合しては情報は載せられていないため、別途 Firebase の Crashlytics を使用してチームで確認をしています。
直近で想定外の挙動やエラーが発生していないか、直近のリリースによる大きな影響がないかなどを中心に見ています。
レジアプリは隔週でのリリースを基本にしています。そのため、前回MTGからの間にアプリのリリースが行われていることが多く、リリース前後の変化を見るのにちょうどよいタイミングになっています。
プロダクトの性質やリリースの頻度、チームで集まれる時間などによって、適切な頻度は変わると思うのでそれぞれの組織にあった形で定期的に見ていくと良いかなと思います。
障害発生時やお問い合わせ調査時の活用
Dashboardは、定期的な監視だけでなく、障害発生時やお問合せの調査時にも役立っています。
STORESには複数プロダクトがあり、それぞれのプロダクトが連携して提供している機能も多くあります。 そのため、他システムと連携する箇所においてリクエスト時間が伸びていないか、エラーが増えていないか、なども意識して見られるように追加しています。
あるプロダクトで障害が発生しエラーを検知した際に、その時点でレジアプリへどれくらい影響が発生しているか、障害対応がされる中影響がおさまってきたかなどを把握する場所としても活用できています。
お問い合わせ調査の際には、全体像として通常時と違う状態か、エラーが発生しているならどれくらいの割合で起こっているかなど、詳細の調査に入る前にまず大枠の状態を確認できる場所として役立っています。
まとめとこれから
私たちは新しいチームのメンバーで安定してプロダクトを運用していく必要がありました。 そのためにも、まず全員で共通認識を作るという目的をもち、本記事のような取り組みをしてきました。
結果的に、DatadogやFirebaseなどでプロダクトの状態を見ていくことで、現状や課題点などの認識が合わせられました 。 引き続き、本来の目的であるプロダクトをよりよくしていくために、改善を進めていきたいと思います。
STORESでは、一緒によりよいプロダクトを作っていくメンバーも募集しています。興味を持って頂けた方はぜひご連絡ください。