CARVIEW |
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
パフォーマンスモニタリング: RUM と合成モニタリング
合成モニタリングと実ユーザーモニタリング (RUM) は、ウェブパフォーマンスを監視し洞察を提供するための 2 つの手法です。 RUM と合成モニタリングはパフォーマンスを異なる視点から捉え、それぞれ好ましいこと、適切な用途、欠点が存在します。 RUM は長期的な傾向の把握に一般的に良く適している一方、合成モニタリングは退行テストや開発中の短期的なパフォーマンス課題の軽減にとても適しています。この記事で、これら 2 つのパフォーマンス監視手法を定義し比較します。
合成モニタリング
合成モニタリングとは、ページパフォーマンスを「実験室」環境で監視する手法であり、通常は可能な限り一貫性のある環境で自動化ツールをつけて行われます。合成モニタリングでは、エンドユーザーがウェブアプリケーション内で導かれる可能性のある経路をシミュレートするスクリプトを展開し、シミュレーターが体験したパフォーマンスを報告します。測定されるトラフィックは実際のユーザーのものではなく、ページパフォーマンスに関するデータを収集するために合成的に生成されたトラフィックです。
合成モニタリングの例としては WebPageTest.org が挙げられます。これは地理、ネットワーク、端末、ブラウザー、キャッシュ状態などの変数が事前に決められた制御環境で行われます。ホストおよび CDN から提供される資産、ならびに広告や分析サービスなどのサードパーティースクリプトによって生成されるすべてのサードパーティー資産と資産リクエストについて、ウォーターフォールチャートが提供されます。
環境変数を制御することは、パフォーマンスのボトルネックが発生している箇所を理解し、パフォーマンス課題のソースを特定するのに 役立ちます。しかしそれは、例えばユーザーの実際の体験、特にロングテールを反映するものではありません。
合成モニタリングは退行テストや本番環境監視の重要な要素となり得ます。開発の各段階でサイトを検査し、本番環境でも定期的に実施してください。継続的インテグレーションの一環としてベースライン性能からの変化が生じた場合、プッシュを失敗させるべきです。本番環境で課題が発生した場合、合成モニタリングは洞察を提供し、問題の特定・隔離・解決を、ユーザー体験に悪影響を及ぼす前に役立つ形で支援します。
実ユーザーモニタリング
実ユーザーモニタリング (RUM) は、実際のユーザーのマシンからページのパフォーマンスを測定します。一般的に、サードパーティーがそれぞれのページにスクリプトを挿入し、行われたすべてのリクエストのページの読み込みデータを測定して報告します。これは、アプリケーションの実際のユーザーとの対話する操作を監視します。実ユーザーモニタリングでは、実際のユーザーのブラウザーが体験したパフォーマンス指標を報告します。 RUM は、ユーザーの地理的分布やその分布がエンドユーザー使い勝手にとって重要な影響を及ぼすことを含む、アプリケーションがどのように使用されているかを特定するのに役立ちます。
合成モニタリングとは異なり、 RUM は端末、ブラウザー、ネットワーク、地理的位置に関係なく、実際のユーザーのパフォーマンスを捉えます。ユーザーがアプリケーションと対話する際に、実行された操作や閲覧したページに関わらず、すべてのパフォーマンス計測値が収集されます。 RUM は実際のユースケースを監視します。エンジニア、プロダクトマネージャー、マーケティングチームが事前に定義した合成的な仮定するユースケースではありません。これは特に、機能やコンテンツが絶えず変化し、アプリケーションにアクセスするユーザー層が開発者とはライフが大きく異なる大規模サイトや複雑なアプリにおいて重要です。
RUM を活用することで、企業はユーザーをより深く理解し、自社サイトで最も注力すべき領域を特定できます。さらに RUM は、ユーザーの地理的分布やチャネル別利用傾向の把握にも役立ちます。ユーザー動向を把握することで、事業計画をより的確に定義できるほか、監視の視点位置からは、最適化やパフォーマンス改善のために重点的に対象とする主要領域を特定することが可能となります。
RUM と合成モニタリング
合成は、特にネットワークスロットルにおいて、開発ライフサイクルにおける退行の検出にとても適しています。比較的簡単で低コストであり、コード変更の効果を測定する効果的な方法として、開発中にパフォーマンスをスポットチェックするのに最適です。ただし、実際のユーザーが体験している状況を反映しておらず、パフォーマンスの狭い視点しか提供しません。
一方、 RUM はサイトやアプリケーションを使用することができる実際のユーザーからの実測データを提供します。これはより高価で不便かもしれませんが、重要なユーザー体験データを提供します。
パフォーマンス API
モニタリングサービスは数多くあります。独自のモニタリングシステムを構築したい場合は、主に PerformanceNavigationTiming
と PerformanceResourceTiming
、さらに PerformanceMark
、PerformanceMeasure
、PerformancePaintTiming
といったパフォーマンス API を見ていくことをおすすめします。