クライアントサイドアプリ
スマートフォン、デスクトップ、小売キオスクなどのデバイスで動く、エンドユーザーが操作するアプリで OpenTelemetry を使用します。
サーバーサイドのワークロードと比較して、クライアントサイドのアプリケーションは、オブザーバビリティにおける特有の課題があります。 こうしたアプリは、あなたが管理できないデバイス上で動作し、ネットワーク条件、ハードウェア性能、ユーザーの振る舞いもさまざまです。
なぜクライアントサイドのオブザーバビリティが重要なのか
従来のサーバーサイドモニタリングは、バックエンドシステムの可視化には役立ちますが、ユーザー体験の全体像までは捉えきれません。 クライアントサイドのオブザーバビリティは、以下のことができます。
- 実際のユーザー体験を把握する: ユーザーが体験する実際の読み込み時間、フレームレート、応答性を確認できます。
- コンテキストに沿って問題をデバッグする: デバイスの特性やネットワーク条件、ユーザーの操作とエラーを紐づけられます。
- エンドツーエンドのトランザクションを追跡する: クライアントサイドの処理とバックエンドのトレースをつなぎ、完全な分散トレースを実現します。
- アプリの健全性を大規模に監視する: ユーザーベース全体のテレメトリーを集約し、パターンや傾向を特定できます。
サーバーサイドの計装との主な違い
クライアントアプリを計装する場合、以下の点を考慮してください。
- リソース制約: モバイル端末やブラウザは、CPU やメモリ、バッテリーに限りがあります。 テレメトリーの収集は効率的に行い、アプリのパフォーマンスに悪影響を与えないようにします。
- ネットワークの変動性: ユーザーのネットワーク環境は、低速、断続的、またはオフラインである可能性があります。 ネットワークの不安定さに備え、オフラインバッファリングとバッチエクスポートを実装します。
- セッション管理: ユーザーセッションを追跡し、関連するテレメトリーをまとめます。 複数のアプリ起動にまたがるユーザージャーニーも把握しやすくなります。
- プライバシーと同意: クライアントアプリは、プライバシー規制の対象となるデータを収集することがよくあります。 データ最小化、同意の管理、属性の削除を計画します。
- データ量: ユーザー数が数百万規模になりうる場合、コストを抑えつつ代表的なテレメトリーを保持するには、サンプリング戦略が不可欠になります。
リアルユーザーモニタリング (RUM)
OpenTelemetry は、実際のユーザーがアプリケーションをどのように体験しているかを把握するリアルユーザーモニタリング(RUM)パターンをサポートしています。
- ページ / 画面の読み込み性能: 最初のバイトや最初のコンテンツ描画、読み込み完了までの時間。
- ユーザー操作: クリックイベントや画面遷移のパターン、フォーム送信。
- エラーとクラッシュ: 未処理の例外や ANR イベント、エラー率。
- リソースの読み込み: ネットワークリクエストの所要時間やキャッシュヒット率、リソースサイズ。
バックエンドとの接続
クライアントテレメトリーは、バックエンドのトレースと結びつけられたときに最も価値が出ます。 HTTP リクエストにトレースコンテキストを伝搬させ、エンドツーエンドで見えるようにします。
クライアントアプリ → API ゲートウェイ → バックエンドサービス → データベース
│ │ │ │
└─────────────────┴─────────────────┴────────────────┘
関連するトレース
クライアント SDK でトレースヘッダー (traceparent, tracestate) を付与するよう設定し、バックエンドサービスの各処理でもこのコンテキストを伝搬するようにします。
フィードバック
このページは役に立ちましたか?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!