アプリケーション性能管理(APM)について
アプリケーション性能管理、通称APMは、ソフトウェアアプリケーションの性能や可用性を細かく監視し、ユーザーが快適に使用できる環境を維持するためのプロセスです。APMは、応答時間やエラー率、スループット、資源使用率などの指標を継続的に収集し、パフォーマンスの低下や障害を早期に発見し、それらの原因を特定して改善することを目的としています。
APMの略称と役割
APMという略称は「アプリケーション性能監視」とも関連づけられていますが、性能管理はその広い範囲のうちの一部であり、実際の運用はこの両方を含みます。たとえば、利用者が「画面表示が遅い」と訴えた場合でも、サーバーのCPUやメモリ使用率が正常であることがよくあります。APMはそのような状況下でアプリケーション内部の処理を可視化し、遅延の原因を特定する役割も担っています。
監視対象と指標
APMでは、主に以下の指標が監視対象となります。
- - 応答時間:リクエストが処理されるまでの時間。
- - エラー率:特定のアクションに対するエラーの発生頻度。
- - スループット:単位時間あたりに処理されるリクエストの数。
- - 資源使用率:CPUやメモリの使用状況。
- - 遅延(レイテンシ):クライアントとサーバー間でのデータ伝送にかかる時間。
可用性やサービスレベル合意(SLA)の達成度も重要な指標です。これらはサービスの品質を測定するための基盤となります。
また、APMにおいては、利用者の体験を表す指標の一つとして「Apdex」があります。これは、応答時間を0から1のスケールに変換し、目標時間内に処理されたリクエストを「満足」、限界時間内を「許容」、それを超えるものを「不満」と分類します。Appdexスコアが1に近いほど、利用者の満足度が高いことを示します。
監視手法
APMの監視手法は二通りに分かれます。一つは、実際の利用者の操作をもとに性能データを集める「リアルユーザー監視」、もう一つは事前に設定した手順を基に自動で応答を測定する「合成監視」です。合成監視では、ヘッドレスブラウザを用いて取引サイトの決済プロセスを模擬し、処理にかかる時間や結果を検証します。
コードレベルでの診断
APMのもう一つの重要な側面は、アプリケーション内部の処理を詳細に追跡し、問題のある部分を特定することです。各リクエストが経過する処理の時間を記録し、データベースの呼び出しや外部サービスとの連携を含めて可視化します。これにより、遅延が発生している部分や資源を過度に消費している箇所を明らかにする「コードプロファイリング」も実施されます。特に、
マイクロサービスアーキテクチャでは、1つのリクエストが多くのサービスを跨ぐため、
分散トレーシングによって処理の流れを一元的に追うことが重要です。
APMの歴史的背景
APMの発展は、従来のシステム監視からアプリケーションの内面的なパフォーマンスに焦点を移したことに起因しています。これにより、インフラストラクチャーが正常であってもアプリケーション内部にボトルネックが存在する場合、ユーザー体験が損なわれることが理解されるようになりました。2004年には、ピーター・セブチックがユーザー体験を可視化するための標準としてApdexを提唱し、2005年には技術仕様が公式に定義されました。
最近ではクラウド技術や
マイクロサービスの普及に伴い、APMによって監視する対象や処理するデータ量が劇的に増加しています。これを受けて、
ガートナーは従来の「APMと
オブザーバビリティ」というカテゴリを2024年から「
オブザーバビリティ・プラットフォーム」と呼ぶことに変更しました。
オブザーバビリティは、システムが外部に出力するデータを利用し、内部状態を推測する考え方です。APMは、そのための重要な具現化の一つとされ、従来のサーバー監視と相互補完的に機能しています。サーバー監視がシステムの正常性を確認するのに対し、APMはアプリケーションの利便性を測定します。また、最新のAPMソリューションでは、
OpenTelemetryのような標準規格の導入により、柔軟にデータの送り先を選択できるように進化を遂げています。
主なAPM製品
APMは独立した製品としてだけでなく、
オブザーバビリティ・プラットフォームの一部として提供されることが多く、その中でリーダー企業としてChronosphere、
Datadog、Dynatrace、Elastic、Grafana Labs、
IBM、
New Relic、
Splunkが挙げられています。つづいて、日本でははてなのMackerelなどもAPM機能を持つ製品として提供されています。
これらのAPMソリューションは、ユーザー体験の向上を目指し、ビジネスの成長を支える重要な役割を果たしています。