この記事は「第二回:MELTで理解するログと監視の世界 ~Metrics・Events・Logs・Traces」に続く記事になります。第二回の記事では、IT運用におけるMELTの活用、分散トレーシングおよびサービス検出についてご紹介しました。第三回では、APM活用事例を取り上げ、MELTの活用がどのようにアプリ品質や開発者体験の向上につながるかを具体的に見ていきます。
目次
- APMの導入目的と期待効果
- ソリューション事例
- APM活用によるアプリ品質向上と開発者支援
- SaaS型APMの活用ポイント
- まとめと次回予告
1. APMの導入目的と期待効果
第一回記事の「ログ分析基盤とAPMの目的・役割の比較」でも解説していますが、 APMは、「アプリケーションの振る舞いを詳細に追跡し品質を高める」ことを目的としています。 期待効果として、アプリケーションの品質向上、障害発生時の迅速な原因究明、開発者のトラブルシューティング工数削減などがあげられます。
では、なぜアプリケーションの品質向上や開発者支援が可能なのでしょうか? それを知るために、具体的なソリューション事例を見ていきましょう。
2. ソリューション事例
① ユーザー目線での監視
ユーザー目線での監視では、エンドユーザーからクレームが入る前に、アプリケーションの不具合や性能劣化を検知して対応します。 APMツールには、ユーザー目線の監視を行うための以下の機能があります。
a) 合成監視(Synthetic Monitoring)
合成監視は外形監視とも呼ばれ、レコーディングしたブラウザ操作を定期実行してエラーや遅延を検知します。 アクセス元のデバイスやブラウザ、ロケーション(グローバル/プライベート)を設定可能で、様々なユーザ環境を実際にエミュレートできます。 ブラウザ操作だけでなくAPIコールについてもテスト可能です。
b) RUM(Real User Monitoring)
アプリケーションのフロントエンドの動作やユーザー行動を詳細に分析します。以下のデータ収集や分析が可能です。
| 分類 | 収集/分析可能なデータ |
|---|---|
| サイトやページのパフォーマンス |
・セッション数 ・新規訪問者数 ・各ページのロード時間やエラー率 ・Deployバージョン別のパフォーマンス比較 ・エラー詳細の追跡 |
| ユーザー行動 |
・実ユーザーのクリックやスクロールをリプレイ ・ユーザーのフラストレーション兆候の分析 ・ユーザ属性vs行動の分析 |
下図に、合成監視とRUMのイメージを示します。
これらの機能を使ってユーザー目線での監視を行うことで、アプリケーション品質の向上が期待できます。
② ボトルネックの把握
APMツールでは、分散トレースを利用したアプリケーション監視機能があります。 これは、ユーザーからのトランザクションを処理する各コンポーネントから分散トレースを取得し、 これを集約しトレースID毎の分析することで、エンドツーエンドのアプリケーションの動作を把握するものです。 これにより、分散システムにおける処理全体の流れを追跡、アプリケーションの不具合や性能劣化を検知できます。
c) アプリケーション監視
アプリケーション監視では、ユーザーからトランザクション毎に処理を行うコンポーネントから分散トレースを取得・集約・可視化するとともに、トレースをもとにしたアプリケーション・メトリクス(レイテンシー、エラー率など)を可視化します。
下図に、アプリケーション監視のイメージを示します。
アプリケーション監視機能を利用することで、原因究明が早くなり、障害発生の未然防止もしやすくなります。 また、パフォーマンスのボトルネック把握と改善も容易となるため、アプリケーション品質の向上が期待できます。
③ 開発者のワークロード削減
各コンポーネントのメトリクス・イベント・ログは、一箇所に集約されたうえで、アプリケーション監視機能により把握されたトランザクションやトランザクションを処理する単位であるサービス毎にグルーピングされて表示されます。 これにより、単なるコンポーネント毎のデータから、アプリ処理に伴ってどのようにリソースが消費されどのようなログが出力されたかが把握できるようになります。
d) MELT集約とアプリ処理との紐づけ
コンポーネントからMELTを取得・集約したうえで、トレースをもとに把握されたトランザクション/サービス単位で表示します。
下図に、MELT集約とアプリ処理との紐づけのイメージを示します。
これまでは、開発者が障害時にメトリクスやログを集め障害箇所を手動で抽出・分析しながら、影響範囲把握や原因特定を行っていました。 APMを利用するとMELT集約とアプリ処理の紐づけが自動化されるため、 画面上でアプリ処理の特定箇所をクリックするだけで、関連するメトリクス・イベント・ログが表示されるようになります。これにより、 開発者のワークロードが大幅に削減されます。
3. APM活用によるアプリ品質向上と開発者支援
①アプリ品質向上
ISO 25010「システムおよびソフトウェア品質要求事項および評価」では、ソフトウェア品質を8つの特性に分類しています。APMがモニタリング/分析の観点から改善に寄与すると考えられるのは、「性能効率性」「信頼性」「保守性」の3つが挙げられます。
| 品質特性 | 説明 | APMによる改善 |
|---|---|---|
| 性能効率 |
応答時間、処理時間、 リソース使用量などを 指標とする品質特性 |
・トランザクション毎の応答時間やレイテンシ、スループットの可視 ・CPU/メモリ/Disk/Network使用率の可視化 ・DBパフォーマンスの可視化 ・ボトルネック特定 |
| 信頼性 |
障害許容性、回復性、 可用性など |
・エラー率の検知 ・障害発生パターンの可視化 ・MTTR(平均復旧時間)の短縮 ・サービスの可用性監視 |
| 保守性 | 修正容易性、解析性、モジュール性など |
・RCAが容易になる ・サービス構造(依存関係)をトレースで把握 ・改修後の性能変化を比較評価 |
②開発者支援
APM活用により、アプリ開発者のタスクが様々な領域で効率化されます。特に大規模プロジェクトで複数のアプリチームが協働する場合、効率化によるROIが大きくなるとともに、標準化を推進するツールとしての役割も持たせられます。
| 領域 | APMにより効率化される点 |
|---|---|
| 障害対応 | ・問題発生時の迅速なトラブルシューティング |
| 障害未然防止 | ・デプロイ前の性能評価、デプロイ後の性能劣化の検知 |
| アプリケーション 改善 |
・パフォーマンス改善のためのデータ提供 ・アプリ利用頻度と処理内容の可視化 ・RUMによるユーザ行動の分析 |
| コミュニケーション強化 |
・アプリチーム自身がリアルタイムの情報を把握可能 ・担当者間のスキル差を低減 (属人化した分析スキル→誰もが同じレベルの情報を把握) ・インフラ-アプリチーム間、開発-運用間で同じ情報を共有 |
4. SaaS型APMの活用ポイント
APMには、SaaS型とSelf-Managed型があります。
SaaS型とSelf-Managed型の比較
| 観点 | SaaS型 | Self-Managed型 |
|---|---|---|
| メリット |
・基盤構築/運用が不要 ・最新機能を利用しやすい |
・セキュリティの担保 ・初期投資が大きいがコストが見通しやすい |
| デメリット | ・セキュリティの担保 *1 | ・基盤構築/運用の負荷 |
| 主な製品 |
Dyanatrace、Datadog、 Splunk Observability |
IBM Instana Observability、 Elastic APM |
*1 要件と顧客のセキュリティポリシーに依存(例:APMで個人情報が含まれるログを扱いたいが、セキュリティポリシー的に社外への持ち出しができないケースでは、SaaS型の採用が困難)
今後のAPMの活用ポイントとして、AIを利用したデータ利活用や自動化等(DynatraceのDavis AIやDatadogのBits AIなど)があり、その点ではパブリッククラウドのメリットを享受できるSaaS版が推奨されます。
5. まとめと次回予告
今回は、APM活用によりアプリ品質と開発者体験の向上が期待できることをご説明しました。次回は、ログ分析基盤の活用事例を取り上げます。
関連記事
第一回:ログ分析基盤とAPMの違いとは?~目的・機能・製品を比較~
第二回:第二回:MELTで理解するログと監視の世界 ~Metrics・Events・Logs・Traces~
第四回:ログ分析基盤の実践活用 ~可観測性・セキュリティ・ビジネス分析~
【公開予定】第五回:APMとログ分析基盤の融合 ~相互補完による最適化と導入事例~


