Splunk Mobile部門のプリンシパルソフトウェアエンジニアとしてやりがいと満足が一番感じられるのは、私たちが約束した品質と基準を満たすカスタマーエクスペリエンスを実現できたときです。
私はチームメンバーと共にオンコールローテーションを組んで、Splunk Real User Monitoring (RUM)とSplunk On-Call (iOSおよびAndroid)モバイルアプリを使用して重要なサービスレベル指標(SLI)を測定および監視することに力を注いでいます。私たちの安眠を妨げるSLIを2つあげるなら、それは「アプリの起動時間」とインタラクティブ時間(別名「準備完了までの時間」)です。この2つのメトリクスは、アプリが完全に機能し、ユーザーの操作を受け付けられる状態になるまでの時間を測定します。このメトリクスを測定および監視する方法の詳細については、「アプリ起動エクスペリエンスの徹底検証」のブログをご覧ください。
結果や進捗を追跡するために、私たちは、SLIが基準を満たさない場合にオンコールエンジニアに通知するアラートとそのグラフを作成しました。
オンコールエンジニアは、「アプリの起動時間」または「準備完了までの時間」のp75が5秒を超えた場合に呼び出しを受けます。呼び出しを受けると、RUMのメトリクスをプラットフォーム、アプリのバージョン、OSのバージョンごとに分類し、新しいコードがパフォーマンスに影響を与えていないかを見極めます。さらに、セッションの詳細ページに、想定時間よりも長くかかった「アプリの起動時間」または「準備完了までの時間」に関する詳細情報を表示します。呼び出しを受けるたびに、私たちは少しずつSLIを改善したりカスタムイベントを追加したりすることで、「準備完了」までのシーケンスをより詳細に把握できるように努めています。また、インシデント後にはレビューミーティングを実施して、それぞれの呼び出しについて、そして「アプリの起動時間」と「準備完了までの時間」を改善するために講じた措置について話し合います。
これまでで最も大口のお客様と契約した直後に、オンコールエンジニアが真夜中に、それも週に2度も呼び出しを受けました。そこでSplunk RUMのデータを調査したところ、この新しいお客様のケースでは、「o11y_fetch_and_store_dashboards」の時間が極端に長いことが判明しました。
そのインシデントの調査中に、私たちは、ユーザープリファレンスを取得するためのAPI応答時間が非常に長い(5.8秒)ことを突き止めました。このAPIコールは、大規模なデータセットに対して複数回実行されるはずでしたが、ここでは1回しか実行されませんでした。つまり、大規模なデータセットのページネーションが行われると予想していました。
Splunk RUMのトレースとSplunk APMを結びつけてみたところ、使用されているプライマリクエリーの最適化が不十分で、結果のページネーションが期待通りに行われていないことがわかりました。この問題の影響を受けていたAPIにホットフィックスを適用したことにより、「準備完了までの時間」を10%短縮することができました。
さらに、収集されたメトリクスをもとに、私たちはフィールドを抽出するための連絡先リストをループするコードに注目しました。このループが、「準備完了までの時間」全体の50%以上を占めていたのです。調べてみると、このコードはキーフィールドを抽出するために連絡先リストを3回もループしており、このことが「o11y_dashboard_list_favorite_load_time」が長くなる原因でした。
最適化が不十分であったコードがQA環境で見逃されたのは、連絡先リストが短かったためにこの複数回のループが短時間で完了していたことが原因でした。しかし大規模なお客様の場合は著しく速度低下を招き、深刻な問題となってしまいました。このコードを最適化して、連絡先リストのループを1回で済むようにしたところ、この後続のリリースでは時間が5秒短縮され、「準備完了までの時間」のパフォーマンスが33%改善したうえに、業務時間後の呼び出し回数をゼロにすることができました。
新バージョンのリリース後は、この新規のお客様のエンゲージメントも向上し、その後長期にわたって関係を維持していくことができました。オンコールローテーションによって、モバイル開発チームのメンバーは当事者意識をもってSLIを監視するようになりましたが、Splunk RUMをモバイルオブザーバビリティのスタックに加えたことで、これまでにないほど容易にSLIを改善することができるようになりました。iOSとAndroidをお使いであれば、簡単に使い始めることができます。無料トライアル版をお試しになりたい場合は、こちらからご登録ください。
アプリ起動のサービスレベル指標(SLI)の詳細については「アプリ起動エクスペリエンスの徹底検証」をご覧ください。
このブログ記事は、SplunkのシニアプロダクトマネージャーであるSeerut Sidhuとの共同執筆です。
このブログはこちらの英語ブログの翻訳です。
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。