APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する

APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する

 社内の業務担当者だけではなく、取引先や顧客にまで拡大している企業ITのユーザー層。

 いまや消費者に対してセルフサービス型のアプリケーションを提供することも、珍しくなくなっています。

 ここで大きな課題になるのが、快適な利用体験をいかにして維持し続けていくか。

 そのために注目され、活用が広がっているのが「APM」です。

 そこで本記事では、APMの概要をはじめ、注目を集める理由や求められる機能などについて、簡単に解説します。

▼ 目次
APMとは
APMが注目を集める理由とは
運用後に顕在化するアプリケーションのパフォーマンス問題
APMに求められる機能とは
DevOpsの実現にも貢献するAPM

1. APMとは

 APMとは「Application Performance Management(アプリケーション・パフォーマンス・マネジメント)」、もしくは「Application Performance Monitoring(アプリケーション・パフォーマンス・モニタリング)」の略であり、その名前が示す通り「アプリケーションのパフォーマンス(性能や処理時間)」を監視・管理するための手法を意味しています。

 そのために利用するツールのことを「APMツール」と呼びます。

 つまり、アプリケーションのパフォーマンスを期待どおりに維持し、そこから逸脱した場合には素早く原因を究明した上で、問題を解決するための手法なのです。

 なぜAPMが注目されるようになっているのでしょうか。




 

2. APMが注目を集める理由とは

 情報システム担当者が APM に注目する主な理由は下記の 2 点です。

2-1.企業アプリケーションのユーザーが、社内ユーザー以外にも拡大している

 企業アプリケーションのユーザーが、社内ユーザー以外にも拡大していることが大きな理由です。

 その結果、アプリケーションの利用体験に対する期待が、これまで以上に高くなっているのです。


APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する



 ユーザーが社内にしかいなかった時代には、企業アプリケーションに期待されることは基本的に、「必要な業務処理を確実に実行すること」でした。

 つまり多くのアプリケーションは「使えればいい」というスタンスで提供されることが多く、ユーザーもその状況に甘んじていたと言えます。


APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する

 しかしユーザー層が取引先や顧客にも広がることで、状況は大きく変化しました。

 単に必要な処理結果が得られるだけではなく、それをよりスピーディに実行することが求められるようになったのです。


APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する



 特に顧客向けのアプリケーションの場合には、レスポンス時間が長くなることで「離脱」される危険性が高まります。

 これはB to Cの場合に顕著ですが、B to Bでも同様です。

 つまりアプリケーションパフォーマンスが悪化すると、機会損失に直結する時代になったのです。

APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する

2-2. アーキテクチャの複雑化も見逃せない要因

 もう1つの要因は、アプリケーションを提供するためのITインフラやアーキテクチャが複雑化していることです。

 例えばECサイトの構成を考えてみましょう。


APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する



 ECサイトは基本的に下記から構成されています。

  • ユーザーからのリクエストを受け付け、処理結果を返すWebサーバー
  • 実際のアプリケーション処理を行うアプリケーションサーバー
  • 処理に必要なデータを扱うDBサーバー


 それぞれ異なるハードウェアや仮想マシンに実装されることになります。

 これだけでもパフォーマンスボトルネックを素早く見つけ出すのは簡単ではありませんが、アクセスが集中した場合には動的にWebサーバーを増やし、負荷を分散させるといったことも行われています。


APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する



 さらに最近のECサイトでは、ショッピングカートの機能や決済機能、レコメンデーション機能、高精細な画像や動画を配信するメディアサーバー、ユーザー行動の分析機能などを、外部のサービスで実現しているケースも珍しくありません。

 そしてユーザーへのレスポンス高速化や各種サーバーの負荷軽減のために、CDNを利用しているケースも増えています。

 その一方で、クラウドへのリフト&シフトが進むことで、アプリケーションを構成するインフラも多様化・分散化しています。

 またアプリケーションのコンテナ化や、各種ミドルウェア機能がPaaS化されているシステムも増えています。

 コンテナ化が進んだシステムでは、コンテナのデプロイが動的に行われることも多く、その数が急速に増えるケースもあります。


APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する



 これはECサイトだけの問題ではありません。

 全ての企業アプリケーションが共通して直面している課題でもあります。

 そしてアーキテクチャが複雑化することで、パフォーマンス上の問題が発生した場合に、その原因を究明することが難しくなっているのです。





3. 運用後に顕在化するアプリケーションのパフォーマンス問題

 アプリケーションのパフォーマンス問題が顕在化するタイミングのほとんどは、運用フェーズに入ってからです。

 開発・テストフェーズでは発見できなかった問題が、本番環境の厳しい状況の中で顕在化されてしまうのです。

 しかし、この問題に対処するために、運用チームが行えることは限られています。


APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する



 その多くは「OSやミドルウェアが出力するログや、リソースの使用状況を見ながら、不足していると考えられるリソースを追加投入する」といったことです。

 Webサーバーの使用率が高ければWebサーバーを追加し、アプリケーションサーバーの利用率が高ければアプリケーションサーバーを追加するのです。

 これで解決するパフォーマンス問題も少なくありませんが、このような対応は「対症療法」に過ぎず、根本的な問題解決になっていないことがほとんどです。

 そして予定外のコストがかかってしまう、という問題もあります。


APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する



 これでも解決しない場合には、開発チームからも専門家を集め、トラブルシューティングに取り組むことになるでしょう。

 当然ながらこのような対処は時間がかかる上、労力やコストもかさむことになります。





4. APMに求められる機能とは

 このような問題の根本解決に貢献すると期待されているのがAPMです。

 数多くのIT関連の概念や用語を提唱・定義しているガートナー社によれば、APMに求められる機能として以下の3つを挙げています。
 (https://www.gartner.com/en/information-technology/glossary/application-performance-monitoring-apm

4-1. DEM(デジタルエクスペリエンスモニタリング)

 DEM(デジタルエクスぺリンスモニタリング)とは、デジタルエージェント(アプリケーションを利用する人や機械)の体験を計測・監視することを指します。

 つまり、エージェントからのリクエストからデジタルコンテンツの生成、ネットワーク配送、受け取った側での組み立て・消費といった、一連の流れ全体のパフォーマンスを測定します。

 このような一連の流れを「デジタルサプライチェーン」と呼び、その時間計測はユーザー満足に直結するKPIになると言えます。

 DEMはAPMの一部ではなく、APMと緊密に連携した別の機能であるという議論もあります。


APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する

4-2. アプリケーション・ディスカバリー、トレース、診断(ADTD)

 ADTD(アプリケーション・ディスカバリー、トレース、診断)とは、アプリケーションを構成する要素(ノード)やそれらの関係を明確化し、ノード間のトランザクションをマッピングした上で、アプリケーション内のどこでどれだけの時間が消費されているのかを、詳細に分析することを指します。


APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する

4-3. AIOps

 AIOpsとは、アプリケーションを構成する要素の自動検出や、パフォーマンスやイベントの異常検出などを、AI を利用して機械学習などで行うことを指します。


APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する



 いずれも重要な機能ですが、ここで特に注目したいのが、2番目に挙げられているADTDです。

 実はこれによって、開発チームと運用チームが緊密に連携したDevOpsを実現しやすくなるのです。





5. DevOpsの実現にも貢献するAPM

 ADTDを実現するには、従来のようにOSやミドルウェアが出力するログ情報や、リソース利用状況の情報だけでは不十分です。

 このような「アプリケーション外部」から得られる情報だけではなく、アプリケーション内部でどのような処理が行われ、そこでどれだけの時間が消費されているのかといった情報が不可欠になるからです。

 そこで必要になるのが、アプリケーションを開発する段階での対応です。


APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する



 具体的には、アプリケーションにトレースのためのライブラリをインポートし、それを利用するためのコードを書き込んでおくのです。

 これによってアプリケーション内部の挙動とその処理時間が可視化されれば、パフォーマンス悪化の根本原因を究明しやすくなります。

 もしリソース不足がアプリケーション悪化の原因でないのであれば、アプリケーションの処理内容を修正することで、問題を解決できる可能性があります。

 サーバーや仮想マシンを無闇に増やす必要はなくなるのです。


APMとは|アプリケーションの性能監視と管理が快適なユーザー体験を実現する




 しかも、このような問題解決を、運用チームと開発チームが協力しながら行うことも容易になります。

 トレース情報が両者の共通言語になるため、意思疎通が行いやすくなるからです。


 このようにAPMは、パフォーマンス問題を迅速に解決するだけではなく、開発と運用の垣根を下げる上でも、重要な役割を果たすと期待できるのです。





まとめ

 本記事では以下について述べました。

  • APMはアプリケーションパフォーマンスを監視・管理するための手法。これが注目されるようになったのは2つの背景がある
    • 企業アプリケーションのユーザーが社外にも広がったことで、アプリケーション体験への期待が高まっている 
    • 企業アプリケーションを構成する要素が複雑化し、パフォーマンスに関係する問題の原因究明が難しくなっている
  • アプリケーションのパフォーマンス問題は、運用チームだけでは根本的に解決することが困難。どうしても「サーバーの追加」といった、対症療法的な対処になりやすく、コストと時間がかかる
  • この問題を解決できると期待されているのがAPM。そこで求められる機能は以下の3つ
    • デジタルエクスペリエンスモニタリング(DEM)
    • アプリケーション・ディスカバリー、トレース、診断(ADTD)
    •  IT運用のための人工知能(AIOps)
  • なかでもADTDの導入は、開発チームと運用チームの連携を促進し、DevOpsの実現にも大きな貢献を果たす可能性がある



 尚、APMの定義や重視すべきポイントについては、ベンダーによって異なる部分もあり、現在も変化を続けているようです。