ウェブブラウザーやモバイルアプリケーションのユーザーエクスペリエンス(UX)に重大な問題が発生している場合、リアルユーザーモニタリング(RUM)が、アプリケーションエンジニアにとって問題解決に役立つ重要な手段です。RUM製品によって、アプリケーションに関するテレメトリー(稼働データ)をエンドユーザーの視点から収集でき、特にフロントエンド特有のバグ(JavaScriptのエラー、画像サイズの不正など)について、ユーザーによる操作など、問題発生に至る経緯を時系列に把握できます。
しかし、問題がフロントエンドとバックエンド間のインターフェースに起因する場合、RUMには限界があります。根本原因に関する情報を収集するために別のツール、すなわちアプリケーションパフォーマンスモニタリング(APM)製品も使わなければなりません。
RUM製品とAPM製品の間を行来しながら解決に当たるべきチームを決め、そのチームから詳細な情報を求めるといったことをしていると、バグ修正に必要なステップが増えていきます。RUMとAPMから得られるそれぞれのテレメトリーを結びつけるために時間を要するため、UXが低下し続け、エラーが修正されないまま残り、結果として収益が失われていきます。
このような問題を防止するためにはAPMとRUMからのデータを結びつけ、チーム間のサイロを打ち壊すことが重要です。
リアルユーザーモニタリングはUXを検証
RUMを活用することで、ユーザーがブラウザーやモバイルアプリケーションをどのように利用しているかをリアルタイムに把握することができます。意図した通りのUXであるかどうかが分かり、特にクライアントサイドのエンジニアにとって非常に価値があります。RUMでは例えば、ユーザーがページの読み込みにかかった時間、ユーザーの位置情報、デバイスタイプ、ブラウザー、OS、アプリケーションのバージョン、URL、エラーやクラッシュといったデータを収集して処理するだけでなく、情報探索をガイドするための専用UIを提供します。
しかし、この優れたツールを活用しても、クライアントサイドで収集できるデータには限りがあります。アプリケーションはさまざまなパブリックAPIを介してバックエンドサービスにクエリーを実行するため、RUMで表示される情報をバックエンドデータと結びつけられず、解決策がすぐそこにあるのに見つけられないことがあるからます。
APMはマイクロサービス間でのリクエスト連鎖関係、レイテンシー、エラーをトレース
APM、特に分散トレーシングでは、アプリケーションを通る個々のリクエストのライフスパンを可視化します。バックエンドアプリケーションのトレースを収集し、フレームグラフとして可視化することで、アプリケーションと、アプリケーションをサポートするインフラとの間で何が起こっているのかを理解するのに役立ちます。
特にAPMスイートは、スタック内の全サービスについて、リクエストのスループット、レイテンシー、エラー率などの主要なパフォーマンスメトリクスを表示しながら、スタック全体でコードがどのように実行されるかを可視化することができます。トラブルシューティングのシナリオでは、RUMで特定されたUXの問題の根本原因が、APM側のトレースで発見されることがよくあります。
RUMとAPMの統合