DEVOPS

Splunk Real User Monitoringを使用したモバイルアプリ起動の最適化

Splunk Mobile部門のプリンシパルソフトウェアエンジニアとしてやりがいと満足が一番感じられるのは、私たちが約束した品質と基準を満たすカスタマーエクスペリエンスを実現できたときです。

私はチームメンバーと共にオンコールローテーションを組んで、Splunk Real User Monitoring (RUM)とSplunk On-Call (iOSおよびAndroid)モバイルアプリを使用して重要なサービスレベル指標(SLI)を測定および監視することに力を注いでいます。私たちの安眠を妨げるSLIを2つあげるなら、それは「アプリの起動時間」とインタラクティブ時間(別名「準備完了までの時間」)です。この2つのメトリクスは、アプリが完全に機能し、ユーザーの操作を受け付けられる状態になるまでの時間を測定します。このメトリクスを測定および監視する方法の詳細については、「アプリ起動エクスペリエンスの徹底検証」のブログをご覧ください。

結果や進捗を追跡するために、私たちは、SLIが基準を満たさない場合にオンコールエンジニアに通知するアラートとそのグラフを作成しました。

通知アラート

オンコールエンジニアは、「アプリの起動時間」または「準備完了までの時間」のp75が5秒を超えた場合に呼び出しを受けます。呼び出しを受けると、RUMのメトリクスをプラットフォーム、アプリのバージョン、OSのバージョンごとに分類し、新しいコードがパフォーマンスに影響を与えていないかを見極めます。さらに、セッションの詳細ページに、想定時間よりも長くかかった「アプリの起動時間」または「準備完了までの時間」に関する詳細情報を表示します。呼び出しを受けるたびに、私たちは少しずつSLIを改善したりカスタムイベントを追加したりすることで、「準備完了」までのシーケンスをより詳細に把握できるように努めています。また、インシデント後にはレビューミーティングを実施して、それぞれの呼び出しについて、そして「アプリの起動時間」と「準備完了までの時間」を改善するために講じた措置について話し合います。

午前3時16分の呼び出し

これまでで最も大口のお客様と契約した直後に、オンコールエンジニアが真夜中に、それも週に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を改善することができるようになりました。iOSAndroidをお使いであれば、簡単に使い始めることができます。無料トライアル版をお試しになりたい場合は、こちらからご登録ください。

アプリ起動のサービスレベル指標(SLI)の詳細については「アプリ起動エクスペリエンスの徹底検証」をご覧ください。


このブログ記事は、SplunkのシニアプロダクトマネージャーであるSeerut Sidhuとの共同執筆です。

このブログはこちらの英語ブログの翻訳です。

Brian Gustafson
Posted by

Brian Gustafson

Brian Gustafson is a Principal Software Engineer at Splunk. 

TAGS
Show All Tags
Show Less Tags