APM(アプリケーションパフォーマンス監視)とは?
アプリケーションパフォーマンス監視とは
APM(アプリケーションパフォーマンス監視)とは、アプリケーションやコードに潜むあらゆるパフォーマンス問題をすみやかに特定して解決するプロセスです。
APMソリューションは、Webサイト、ソフトウェアアプリケーション、サービスからテレメトリデータを収集、監視、分析します。アプリケーション全体をエンドツーエンドで把握できるため、アプリケーションやサービスの依存関係を理解した上でエラーや速度低下に対応できます。また、履歴データを格納して活用し、レイテンシー、スループット、ビジネスKPIといった主要なパフォーマンス指標の傾向を明確化したり、異常値を検知したりすることも可能です。
アプリケーションパフォーマンス監視の機能とは?
アプリケーションパフォーマンス監視は、アプリケーションのパフォーマンスに関する詳細なインサイトを継続的に提供します。これらのインサイトを活用することで、顧客のクレームが来てから対応するのではなく事前に対策を講じることができます。APMにはいくつかの用途があります。たとえば、ユーザーエクスペリエンスの低下を知らせるアラートの設定、最新リリースの影響の評価、改善すべきポイントを情報に基づいて判断することなどが可能です。また、根本原因分析、平均検知時間(MTTD)や平均復旧時間(MTTR)の短縮にも役立ちます。
なぜAPMは重要なのですか?
アプリケーションは現代の組織にとって必要不可欠です。製品、サービス、ツールへの入口として毎日使用するものですが、複雑さも増してきています。クラウドネイティブなテクノロジーやマイクロサービスといった分散アプリケーションの増加により、流れ込んでくるテレメトリデータの量に対応することができなくなっています。優れたユーザーエクスペリエンスを提供するためには、すべてを監視する手段が必要です。
APMがあれば、アプリケーションを期待どおりに稼働させることができます。APMツールは、潜在的な問題を警告して問題のすみやかな解決を促し、顧客の信頼を維持するのに役立ちます。
APMの歴史
1990年代に生み出されて以降、APMは、ITチームがこれまで実現できなかったアプリケーションの可視化を可能にしました。長年にわたり、さまざまな企業が分散トレーシングを試してきました。しかし、堅牢性の高いAPMソリューションが市場に登場したのは2010年代になってからでした。それらは、より高度な追跡機能とエンドツーエンドの監視機能を提供するプラットフォームソリューションとして使用されています。
APMとオブザーバビリティの比較
表面的には、オブザーバビリティとAPMは似ています。両方ともテレメトリを使用してデータを収集し、パフォーマンスに関するインサイトを提供します。APMはアプリケーションの方を重視してトランザクションの追跡と監視を実行しますが、オブザーバビリティはアプリケーションとインフラストラクチャーの両方のパフォーマンスを考慮した概念です。オブザーバビリティでは、技術的な詳細を掘り下げてシステムへの理解を深めることができます。ログ、メトリック、トレースを相互に関連付けることで、パフォーマンス問題の背景や根本原因を把握できます。
アプリケーションパフォーマンス監視の仕組みとは?
APMでは、一連のツールと手法を使用してソフトウェアアプリケーションのパフォーマンスを監視/管理します。APMツールは一般的に、応答時間、スループット、エラー率といった主要なメトリックを監視して、パフォーマンスのボトルネックや問題を特定/診断します。
また、詳細な追跡情報やデバッグ情報も提供するため、開発者がコード内の問題を把握して修正するのに役立ちます。多くの場合、アプリケーションのパフォーマンスに関する情報を関係者に知らせるためのアラート機能やレポート機能も搭載されています。
APMエージェント
エージェントは、一般的にアプリケーションに搭載されているソフトウェアです。トレースとテレメトリデータを監視して、APMサーバーやその他の監視ツールに伝達します。エージェントを使用することで、広範なシステムやアプリケーションを監視できます。エージェントは、パフォーマンスの特定の側面に関するデータを収集するように構成できます。
APMのインストルメンテーション
インストルメンテーションとは、アプリケーションに監視コードを追加してパフォーマンスデータを収集するプロセスです。応答時間、エラー率、リソースの使用量、ログに関するメトリックと、アプリケーションの健全性やパフォーマンスに関するその他の主要な指標を収集するために使用できます。
インストルメンテーションは、ベンダー固有のAPM SDK(ソフトウェア開発キット)またはOpenTelemetryなどのオープンスタンダードを使用して手動で実行できます。この場合は、スパンを使用してトレースを開始/停止します。
また、コードを自動インストルメントするエージェントを使用することもできます。エージェントをインストールすると、分析用にアプリケーションまたはトランザクションの特定の部分をインストルメントして、エンドポイント(通常はAPMプラットフォーム)にデータを送信できます。インストルメンテーションは通常、ツールのUIまたはAPIを介して設定します。環境名、サンプリングレート、その他のメトリックなどを設定します。
APMの分析とアラート
パフォーマンスデータを収集したら、分析できます。ツールを選ぶ際に大切なのは、ユーザーエクスペリエンスを把握しやすく、エラーや問題も一目でわかるダッシュボードやビューが搭載されたツールを選ぶことです。多くのチームは、報告された問題についての調査を開始し、その後に根本原因の特定に取り組みます。APMに対してプラットフォームアプローチを採用すると、この段階でツールを切り替えずにすみます。アラートを設定して、将来の問題を防ぐこともできます。
APMは何を測定しますか?
APMツールでは以下を測定できます。
- サーバーの健全性:サーバーのCPU使用率、メモリーの需要、読み取り/書き込み速度を監視します。
- エラー率:パフォーマンスの低下を追跡して問題を特定します。
- 応答時間:アプリのパフォーマンスが影響を受けているかどうか判断します。
- インスタンス:実行中のサーバーまたはアプリインスタンスの数を把握して、効率的な拡張や全体的なコスト管理を行います。このメトリックは、クラウドベースアプリケーションには欠かせません。
- リクエストレート:ユーザーのトラフィックを評価して、スパイクがある理由やユーザーが非アクティブな理由を把握します。
- 可用性:アプリケーションのアップタイムを追跡します。
APMにはどのようなメリットがありますか?
アプリケーションが動かなくなったときは、ユーザーにネガティブなエクスペリエンスが生まれる前に知っておくことが望ましいといえます。APMを利用すると、問題をすみやかに特定して解決し、さらに将来の問題も予防できます。包括的なAPMツールで以下を実現できます。
- 安定性とアップタイムの向上
- インシデントの低減
- 問題解決の迅速化
- 品質の高いソフトウェアのリリース
- インフラストラクチャーの改善点の特定
- 生産性の向上
- ユーザーエクスペリエンスの向上
- 収益の促進
APMの課題は何ですか?
APMツールに課題がないわけではありません。チームはリアルタイムに流れてくる大量のデータを処理しています。複雑な分散アプリケーション、特にクラウドネイティブなテクノロジーを使用するアプリケーションでは、APMのインストルメンテーションが難しくなることがあります。環境全体に問題があったり、根本原因分析の事例が複雑だったりする場合は、ツールを使用しても苦戦する可能性があります。
APMソリューションは、エンドツーエンドのトランザクション、アプリケーション、コードレベルのパフォーマンスを監視して、広範囲をカバーする必要があります。単一のプラットフォームを採用すると、非常に広い範囲をカバーできるようになり、ワークフローの簡略化や問題解決の高速化が可能になります。事業目標を満たすには、複数の監視方法を組み合わせて使用できる適切なAPMソリューションを選ぶことが重要です。
APMツールの主な機能
適切なAPMツールを選ぶときは、何に注意すべきでしょうか。エンドツーエンドのトランザクション、アプリケーション、コードレベルのパフォーマンスを監視できるさまざまなAPMソリューションがありますが、現在および将来における自社の技術的ニーズに合ったソリューションを選ぶことが重要です。
技術仕様
自社のチェックリストを作成してください。そうすることで、ツールの機能とニーズを比較できます。以下に、APMの技術仕様の例を示します。
- Webサイトやアプリケーションのパフォーマンスを追跡する
- アプリケーションやサービスの依存関係をマッピング/管理する
- 分散したトレースを収集してエンドツーエンドで可視化する
- リアルタイムのユーザー監視(クライアントとサーバー)を提供する
- アプリのパフォーマンスと事業目標を結び付ける
- 機械学習やAIベースの分析を活用する
- さまざまなデータタイプ、データソース、言語に対応する
エンドツーエンドの可視性
APMデータによって、アプリケーションの状況を把握できます。しかし、どのように機能しているかを明確に把握するには、すべてを監視できるようにしなければなりません。
個々のトレースは全体の一部を示しているだけなので、APMツールでさらに一歩進んで過程全体のトランザクションを監視する必要があります。その後、トレースを相互に関連付けることで、コードレベルの懸念事項を俯瞰的に把握できます。
エンドツーエンドの可視性は、AIOpsにとっても重要な要素です。
統合機能群
サードパーティのサービスやアプリケーションと統合することによって、APMツールを組織の大規模なエコシステムにシームレスに適合させることができます。認証からCI/CDフレームワークまで、統合について事前に調べておくことが重要です。
使いやすさ
組織では、さまざまなユーザーがAPM機能にアクセスしなければなりません。直感的なUIでこのようなユーザーのニーズに応えましょう。また、APMソリューションのデプロイ、管理、スケールのしやすさも確認してください。
デプロイのオプション
運用コストや管理コストの削減を目指しているなら、クラウドベースのSaaSオプションを検討することをお勧めします。しかし、これ以外にも検討すべきデプロイオプションがあります。APMツールの中には、マルチクラウド戦略やハイブリッド戦略をサポートできるものもあれば、希望するクラウドプロバイダーに応じて制限があるものもあります。
オープンスタンダード/オープンデータのサポート
オブザーバビリティスペースは絶えず進化しています。新たなツールや標準が市場に登場するに伴い、それに適応できる柔軟なプラットフォームが必要になります。オープンスタンダードやOpenTelemetryのようなテクノロジーを使用すると、将来も使い続けられるツールセットを設計できます。
セキュリティ
ツールを評価する際は、ベンダーのセキュリティに対する取り組みを考慮してください。APMツールの構築方法や提供方法によって、既存のセキュリティフレームワークが強化または脆弱化される可能性があります。コンポーネント間のトラフィックは暗号化する必要があります。サードパーティの拡張機能がセキュリティ上の懸念事項となることもあります。また、APMツールが既存のIDアクセス管理ソリューションに対応していて、詳細な権限設定が可能なことも確認してください。
Elasticによるアプリケーションパフォーマンス監視
2023年、Elasticは3年連続でGartner® Magic Quadrant™ for APM and Observabilityの「Visionary」評価を獲得しました。Elasticは、APMを組み込んだ、オブザーバビリティに対するフルスタックアプローチを企業に提供しています。複数のツールを使用しなくても、360度の視点で製品を把握できます。Elasticは以下を実現します。
- ハイブリッドクラウド/マルチクラウド全体の可視性:Kubernetesやサーバーレスといったクラウドネイティブなテクノロジー向けのオブザーバビリティで、デジタルトランスフォーメーションを加速させます。ElasticはOpenTelemetryのネイティブサポートも提供しています。
- トラブルシューティングと効率の向上:組織内のサイロを解消し、メトリック、ログ、トレースを統合して単一ビューで環境を把握できます。
- パワフルな機械学習と分析:APM相関付けや異常検知などの革新的なAIOpsで、根本原因分析を自動化します。
- ユーザーエクスペリエンスの監視:リアルユーザー監視(RUM)で、ユーザーがどのようにサイトを利用しているかを詳細に確認できます。シンセティック監視で、Webパフォーマンスの問題を顧客よりも先にプロアクティブに把握できます。
APMの用語
分散トレーシング | 分散トレーシングは、フロントエンドサービスからバックエンドサービスまで、アプリケーションを介したリクエストと応答のフローを追跡/分析する手法です。アプリケーションのさまざまな部分が相互にどのように作用しているのかを理解し、潜在的なボトルネックや問題を特定するのに役立ちます。 |
スパン | スパンは、ワークフローの一部です。アクティビティの開始から終了までを測定し、実行に関する情報が含まれています。一般的なスパン属性は次のとおりです。
|
トランザクション | トランザクションは、作業の論理的単位に相当するイベントです。多くの場合、着信リクエスト、または監視対象サービスの類似タスクに関連付けられています。トランザクションには、複数のスパンの他にも、イベントを記録した環境についてのデータなど、その他の属性が含まれることがあります。以下に、トランザクションの例を示します。
APMソリューションでは、トランザクションと言えば通常はWebトランザクションを指し、リクエストを送信してから応答を受け取るまでのすべてのアクティビティが含まれます。 |
トレース | トレースは、アプリケーションが実行したアクションをコードレベルで詳細に記録したものです。アプリケーションのリクエストに関連して行われたメソッド/関数呼び出しのステータスと時間を測定します。 |
サービス | サービスは、特定のタスクまたはタスクセットを実行するソフトウェアの自己完結的な要素です。サービスは、組み合わせがあまり厳密ではなく再利用しやすいように設計されており、マイクロサービスアーキテクチャーでよく使用されています。サービスはほとんどの場合、DockerやKubernetesなどのコンテナーテクノロジーを使用してデプロイされます。 |
OpenTelemetry | OpenTelemetryは、アプリケーション、サービス、ライブラリからテレメトリデータを収集/エクスポートするためのオープンソースフレームワークです。コードのインストルメンテーションやデータ収集用のライブラリとAPIのほかに、データの分析、可視化、格納用のツールや統合も提供します。 OpenTelemetryはベンダーニュートラルで、拡張可能です。テレメトリデータを収集/エクスポートする際の標準と見なされています。 |