ビジネストランザクションとは
AppDynamics アプリケーションモデルでは、ビジネストランザクション(BT)は、アプリケーションが提供するサービスのリクエストを実行するために使用される、エンドツーエンドの、クロスティア処理パスを表します。
ビジネストランザクションは、効果的なアプリケーション モニタリングのための重要なコンポーネントです。これは、ログイン、検索、チェックアウトなどの、ユーザが開始したリクエストを履行して応答するために使用される、環境内のすべての必要なサービスで構成されます。これらのトランザクションには、ユーザがアプリケーションと対話する論理的な方法が反映されます。たとえば、ショッピングカートに品目を追加してから、さまざまなアプリケーション、データベース、サードパーティ API、および Web サービスをチェックアウトするなどのアクティビティです。
AppDynamics のビジネストランザクション
AppDynamics を使用すると、多くの時間とリソースを消費する問題を解決し、最も重要な事業運営を最適に実行できます。アプリケーション内でドリルダウンして、より具体的な目標と運用に焦点を当てることができます。たとえば、小売 Web サイトでは、チェックアウトまたはカタログの運用に焦点を当てることができます。一方、金融サービス企業は、モバイルクライアントに提供される最も使用されている API に焦点を当てることができます。プロセスの早い段階でビジネス目標に優先順位を付けることで、BT の設定がずっと容易になります。
AppDynamics はビジネストランザクションを自動的に検出およびマッピングします。カートに追加などのアクションは、タグ付けされてアプリケーションのすべてのコンポーネントでトレースされ、トポロジマップで可視化されます。これによりアプリケーション全体のパフォーマンスをより詳しく理解できます。
ビジネストランザクションとエンドポイント
ビジネストランザクションのエンドツーエンドのコンテキスト内で、サービスエンドポイントにパフォーマンスの問題があるかどうかを最初に特定する必要があります。Edge サービスに障害がありますか。そうでない場合は、どのダウンストリームサービスに障害がある可能性があるかを特定します。
ビジネストランザクションとサービスのトリアージ
パフォーマンス異常に関するサービスのトリアージを実行するには、まず、問題の根本原因を特定する必要があります。原因に焦点を当てられるように、次の質問に答える必要があります。
- 問題は、自分のサービスにありますか。または、そのダウンストリームの依存関係のいずれかにありますか。
- 動作はすべてのサービスエンドポイントのインスタンスに共通ですか。または、サブセットに共通ですか。
- 影響を受けるインスタンスの共通点は何ですか。
- タグはサービスインスタンスで実行されますか。または、リソースで実行されますか。
- 共有インフラストラクチャに正常性の問題がありますか。
- 問題はリリースイベントに関連していますか。
- 問題はアプリケーション インフラストラクチャの正常性の異常と関連していますか。
ビジネストランザクションに推奨される AppDynamics のベストプラクティスについては、「ビジネストランザクションを作成するためのベストプラクティス」を参照してください。
サンプルビジネストランザクション
たとえば、架空の ACME オンラインアプリケーションがあるとします。アプリケーションは http://acmeonline.example.com/checkout
に購入サービスを表示します。
サービスに対するユーザリクエストは、以下の分散処理フローとアクションをトリガーします。
- 発生元のティアのビジネス トランザクション エントリ ポイントは
/checkout
URI で、CheckoutServlet
と呼ばれるサーブレットにマップされます。 - このリクエストにより、発生元のティアはダウンストリームティア(ECommerce-Services サーバ)上で
createOrder
メソッドを呼び出します。 - インベントリティアアプリケーションは、バックエンドデータベース、つまりビジネストランザクションのイグジットポイントを呼び出します。リクエストコンテキストは、バックエンドティアの呼び出しを含め、ティア全体で維持されます。
- エントリポイントのユーザリクエストは、このビジネストランザクション(購入ビジネストランザクション)と同様に分類されます。
分散ビジネストランザクションにあるすべてのコンポーネントの検出を有効化するには、ダウンストリーム エージェントが同じ AppDynamics リリースにあるか、アップストリーム エージェントより新しい必要があります。これは、すべてのティアが同じプラットフォームで構築されているかどうかに関係なく該当します。たとえば、すべて Java で構築されていても、複数のプラットフォーム(Java ティアや .NET ティアなどを呼び出す Node.js ティア)で構築されていても該当します。