

# OPS04-BP03 ユーザーアクティビティテレメトリーを実装する
<a name="ops_telemetry_customer_telemetry"></a>

ユーザーアクティビティに関する情報が送出されるよう、アプリケーションコードをインストルメント化します。ユーザーアクティビティの例としては、クリックストリームのほか、開始、放棄、完了済みトランザクションなどの情報があります。この情報を使用して、アプリケーションの使用方法や使用パターンを理解したり、応答が必要とされるタイミングを特定したりできます。実際のユーザーアクティビティをキャプチャすることで、模擬アクティビティを構築して本稼働環境のワークロードのモニターやテストに使用できます。

 **期待される成果:** 
+  ワークロードから、すべてのアプリケーションにまたがるユーザーアクティビティに関するテレメトリが送信されます。 
+  模擬ユーザーアクティビティを活用して、オフピーク時のアプリケーションをモニターできます。 

 **一般的なアンチパターン:** 
+ 開発者は、ユーザーのテレメトリーなしで新しい機能をデプロイした。顧客が当該機能を使用しているかどうかが、顧客に問い合わせない限りわからない。
+ フロントエンドアプリケーションのデプロイ後、使用量が増加した。ユーザーアクティビティのテレメトリがないため、正確な問題を特定するのが難しい。
+  オフピーク時にアプリケーションで問題が発生した。模擬ユーザーアクティビティを構成していなかったため、朝になってユーザーがオンラインになるまで問題に気付かなかった。 

 **このベストプラクティスを活用するメリット:** 
+  一般的なユーザーパターンや意図しない動作を理解して、アプリケーションの機能をビジネス目標に合うように最適化できます。 
+  ユーザー視点でアプリケーションをモニターし、リンクの不具合やクリック応答速度の低下など、ユーザーエクスペリエンスに関する問題を検出できます。 
+  影響を受けたユーザーが行った手順を追跡することで、問題の根本原因を特定できます。 
+  模擬ユーザーアクティビティは、オフピーク時のパフォーマンス低下に対して早期に警告サインを出すため、実際のユーザーに影響が出る前に修正アクションを取ることができます。 

 **このベストプラクティスが確立されていない場合のリスクレベル:** 中 

## 実装のガイダンス
<a name="implementation-guidance"></a>

 ユーザーアクティビティに関する情報が送出されるよう、アプリケーションコードを設計します。この情報を使用して、アプリケーションの使用方法や使用パターンを理解したり、応答が必要とされるタイミングを特定したりできます。模擬ユーザーアクティビティを利用して、アプリケーションのオフピーク時のパフォーマンスに関するインサイトを取得します。 

 **お客様事例** 

 AnyCompany Retail は、アプリケーションの複数のレイヤーにユーザーアクティビティテレメトリを実装しています。フロントエンドテレメトリがマウスの挙動や移動に関するイベントを追跡し、バックエンドのマイクロサービスが、ユーザーの買い物カゴに商品を追加する、会計するなどのイベントを追跡したテレメトリを送信します。これら両方を合わせてユーザーエクスペリエンスに関する可観測性が提供されます。AnyCompany Retail はまた、模擬ユーザーテレメトリを使用して、ワークロードを利用するユーザーが少ないときに問題を捕捉します。 

 **実装手順** 

1.  ユーザーアクティビティに関するテレメトリ (メトリクス、イベント、ログ、トレース) を送信するようにアプリケーションをインストルメント化します。インストルメント化すると、ユーザーがユーザーインターフェイスを操作するたびに、フロントエンドコンポーネントが自動的にテレメトリを送信します。バックエンドアプリケーションは、ユーザーイベントとトランザクションのテレメトリを送信します。 

   1.  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) を使用して、フロントエンドアプリケーションのエンドユーザーエクスペリエンスに関するインサイトを取得できます。 

   1.  [AWS Distro for Open Telemetry](https://aws-otel.github.io/) を使用して、アプリケーションをインストルメント化し、テレメトリをキャプチャできます。 

   1.  [Amazon Pinpoint](https://docs.aws.amazon.com/pinpoint/latest/developerguide/welcome.html) を使用して、キャンペーンを通したユーザーの行動を分析し、ユーザーエンゲージメントに関するインサイトを取得できます。 

   1.  Enterprise Support を利用しているお客様は、テクニカルアカウントマネージャーから、[モニタリング戦略の策定ワークショップ](https://aws.amazon.com/premiumsupport/technology-and-programs/proactive-services/)をリクエストできます。このワークショップは、お客様がワークロードの可観測性戦略を策定するのを支援します。 

1.  模擬ユーザーアクティビティを作成して、アプリケーションをモニターします。模擬ユーザーアクティビティはユーザーアクションをシミュレートし、アプリケーションが正常に動作しているかを検証します。 

   1.  [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) は、canary を使用してユーザーアクティビティをシミュレートできます。 

 **実装計画に必要な工数レベル:** 高。アプリケーションを完全にインストルメント化してユーザーアクティビティのテレメトリを収集するには、大規模な開発工数がかかる場合があります。 

## リソース
<a name="resources"></a>

 **関連するベストプラクティス:** 
+  [OPS04-BP01 アプリケーションテレメトリーを実装する](ops_telemetry_application_telemetry.md) - ユーザーアクティビティテレメトリを構築するには、アプリケーションテレメトリが必要です。 
+  [OPS04-BP02 ワークロードテレメトリーを実装して設定する](ops_telemetry_workload_telemetry.md) - 一部のユーザーアクティビティテレメトリは、ワークロードテレメトリとみなされます。 

 **関連するドキュメント:** 
+ [アプリケーションを効率的にモニタリングする方法](https://aws.amazon.com/startups/start-building/how-to-monitor-applications/)

 **関連動画:** 
+ [AWS re:Invent 2020: Monitoring production services at Amazon ](https://www.youtube.com/watch?v=hnPcf_Czbvw)(AWS re:Invent 2020: Amazon における製造サービスのモニタリング)
+ [AWS re:Invent 2021 - Optimize applications through end user insights with Amazon CloudWatch RUM ](https://www.youtube.com/watch?v=NMaeujY9A9Y)(AWS re:Invent 2021 - Amazon CloudWatch RUM を使用してエンドユーザーインサイトを介しアプリケーションを最適化する)
+ [ Testing and Monitoring APIs on AWS - AWS Online Tech Talks ](https://www.youtube.com/watch?v=VQM38CZyjFY)(AWS での API のテストとモニタリング - AWS Online Tech Talks)

 **関連する例:** 
+ [ Amazon CloudWatch RUM Web Client ](https://github.com/aws-observability/aws-rum-web)
+ [AWS Distro for Open Telemetry ](https://aws-otel.github.io/)
+ [ Implementing Real User Monitoring of Amplify Application using Amazon CloudWatch RUM ](https://aws.amazon.com/blogs/mobile/implementing-real-user-monitoring-of-amplify-application-using-amazon-cloudwatch-rum/)(Amazon CloudWatch RUM を使用して実際のユーザーのモニタリングを実装し、アプリケーションを増強する)
+ [1 つの可観測性ワークショップ](https://catalog.workshops.aws/observability/en-US/intro)

 **関連サービス:** 
+ [ Amazon CloudWatch RUM ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html)
+ [ Amazon CloudWatch Synthetics ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html)
+ [ Amazon Pinpoint ](https://docs.aws.amazon.com/pinpoint/latest/developerguide/welcome.html)