APMとは?アプリケーションパフォーマンス監視を解説
APM、すなわちApplication Performance Monitoringは、アプリケーションを計装して、その本番環境でのパフォーマンスと動作をコードのレベルで理解する取り組みです。
APMは、インフラのメトリクスからアプリケーション自体へと焦点を絞り込みます。どのendpointが遅いか、どのデータベースクエリが高コストか、エラーがどこから来るか、そしてリクエストがサービス間をどう流れるか。これは自分自身のコードを本番環境で観測可能にする規律であり、まさにそれを行うために作られたツールのカテゴリーです。
APMが測定するもの
APMはアプリケーションレベルのシグナルを追跡します。リクエストのスループットとレイテンシ、エラー率、個々のトランザクションのパフォーマンス、そしてデータベースや外部APIといった依存関係の動作です。そのねらいは、アプリケーションが内側からどう動作するかを、開発者が自分のコードとして認識できる用語で見ることです。
tracingとコードレベルの可視性
ほとんどのAPMツールは分散tracingに依存して、サービスをまたいでリクエストを追跡し、時間がどこで費やされているかを特定します。多くはコードレベルの詳細も提供し、トランザクション内の遅いメソッドやクエリを示します。これにより「このendpointは遅い」が「この特定の呼び出しが原因だ」に変わります。
トランザクションと依存関係
APMはアクティビティをトランザクション(1つのHTTPリクエストの処理など)にまとめ、それぞれを実行した操作に分解します。サービスの依存関係をマッピングするため、あるコンポーネントの遅延がどう伝播するかを見られます。これは分散システムのパフォーマンスを理解するうえで不可欠です。
APMとdeploy
APMはdeployを監視するうえで重要な部分です。テレメトリにreleaseバージョンをタグ付けすることで、変更の前後でレイテンシとエラー率を比較し、あらゆるリグレッションをdeployに帰属させられます。これはカナリア分析やdeploy後チェックが依拠するデータです。
APMツール
一般的なAPM製品には、Datadog APM、New Relic、そしてOpenTelemetryの上に構築されたオープンなアプローチがあります。計装の労力やコストはさまざまですが、すべてが同じ目標を目指しています。アプリケーションのランタイムの動作を読み取れるようにし、パフォーマンスの問題を見つけて修正できるようにすることです。
重要なポイント
- APMは本番環境でのアプリケーションパフォーマンスをコードレベルで洞察します。
- ボトルネックを特定するために分散tracingに大きく依存します。
- アクティビティをトランザクションにまとめ、依存関係をマッピングします。
- テレメトリをreleaseごとにタグ付けすることで、APMはdeployを検証できます。