現代のアプリケーション(企業向け・消費者向けを問わず)は、エンドユーザーに高速でシームレス、かつ高可用性の体験を提供するため、サードパーティサービスへの依存度を高めています。この複雑性の増大に伴い、IT担当者がこれらのサービスが意図通りに稼働し通信していることを確認することは、極めて重要であると同時に、やや困難な課題となっています。その結果、API監視はDevOpsチームにとって必須の要素となりました。
では、APIモニタリングとは何でしょうか?その答えを理解するには、まずAPIとは何かを理解することが役立ちます。アプリケーションプログラミングインターフェース(API)とは、アプリケーションソフトウェアを構築・統合するための定義とプロトコルの集合体であり、自社製品が他の製品やサービスと通信することを可能にします。各APIには「APIエンドポイント」と呼ばれるウェブアドレスが割り当てられており、消費側アプリケーションとAPIが通信するためのチャネルとして機能します。
API監視とは?
APIモニタリングとは、APIのパフォーマンスに関するデータを収集・分析し、ユーザーに影響を与える問題を特定するプロセスです。アプリケーションの動作が遅い場合、修正を行う前にまず原因を理解する必要があります。現代のアプリケーションは、少数の大規模サービスではなく多数の独立したマイクロサービスを利用しており、1つのパフォーマンスが低いサービスがアプリケーション全体のパフォーマンスに悪影響を及ぼす可能性があります。さらに、適切な監視が整備されていない限り、数百あるサービスの中から1つのパフォーマンスが低いサービスを特定することは困難です。このため、APIの監視とパフォーマンス測定は、現代のマルチクラウド環境において極めて重要な実践となります。
APIとは何でしょうか?
アプリケーションプログラミングインターフェース(API)は、異なるソフトウェアコンポーネント間の橋渡し役として機能し、データや機能、操作性の交換を可能にします。ソフトウェアアプリケーション間のシームレスな連携を実現する一連のルールやプロトコルとお考えください。APIは、異なるコンポーネント間で機能を標準化された方法でアクセスする手段を提供することで、開発者が堅牢で相互接続されたソフトウェアシステムを構築することを可能にします。
API監視の必要性
API監視は、アプリケーションのパフォーマンスに関する重要な側面を記述するメトリクスを収集・分析します。これにより、開発者は利用しているAPIの健全性と効率性についてより深い理解を得ることができます。
API監視の重要性を理解するために、気象情報を提供するウェブサイトを例に考えてみましょう。そのサイトは気象予報サービスが提供するAPIを利用しています。もしそのAPIの応答が遅い場合、気象情報を表示するウェブページの読み込みが遅くなり、場合によっては表示に失敗し、ユーザーの不満を招く可能性があります。
パフォーマンス監視に加え、開発者がAPIをどのように使用しているか(例えば、どの機能が最も頻繁に使用されているか)についての洞察を得ることも重要です。これにより、改善や更新が必要な領域をより深く理解できます。例えば、一部の開発者が間もなく廃止予定の古いバージョンのAPIを使用している可能性があります。そのような場合、ITチームは当該APIの最新バージョンへの移行計画を立てる必要があります。
API監視は、決済サービスやSalesforceなどの顧客関係管理サービス、組織内の他チームが提供する特殊な内部プロセス向けサービスなど、サードパーティ製コンポーネントを利用する場合に特に重要です。こうした高度にモジュール化されたサードパーティサービスの普及が進むにつれ、より優れた監視ソリューションの必要性が高まっています。
さらに、API モニタリングは、ビジネス機能が API にどの程度依存しているか、またそれらの API を使用することがビジネス目標や主要業績評価指標(KPI)に与える影響に関する情報を提供することができます。
API監視のメリット
- 問題の早期発見
APIは現代アプリケーションの基盤であり、サービス間のシームレスな通信を可能にします。しかし、遅延、エラー、予期せぬ動作が発生しやすい側面もあります。API監視により、これらの問題を早期に検知し、エンドユーザーへの影響を防止できます。応答時間、エラー率、スループットなどの主要指標を監視することで、問題が深刻化する前に積極的に対処することが可能です。
- パフォーマンス最適化
APIを監視することで、そのパフォーマンスに関する洞察が得られます。応答時間の追跡、ボトルネックの特定、リソース使用の最適化が可能です。例えば:
応答時間:監視により、APIが許容可能な時間内に応答することを保証できます。遅延するAPIはユーザー体験やシステム全体のパフォーマンスに影響を及ぼす可能性があります。
スループット:スループットの監視により、APIが処理可能なリクエスト数を把握できます。これにより、キャパシティプランニングやスケーリングの判断が容易になります。
エラー率:高いエラー率は、早急な対応が必要な問題を示しています。監視により根本原因を特定し、迅速に修正することが可能となります。
- セキュリティとコンプライアンス
APIは不正アクセス、インジェクション攻撃、データ漏洩などのセキュリティ脅威に脆弱です。監視により以下のことが可能となります:
異常の検知:APIトラフィックにおける異常なパターンを監視し、セキュリティ侵害の可能性を検知します。
レート制限:不正利用やDoS攻撃を防ぐため、レート制限を適用します。
コンプライアンス:APIがセキュリティ基準(例:OAuth、JWT)や規制要件(例:GDPR)に準拠していることを保証します。
- 依存関係管理
現代のアプリケーションは、内部および外部のAPIに依存しています。監視により、依存関係を効果的に管理できます。例えば:
依存関係の健全性:サードパーティAPIが利用可能で正常に動作していることを監視します。
バージョン互換性:APIのバージョンや廃止予定を追跡し、互換性のない変更を回避します。
- ビジネスインサイト
API監視は、次のような貴重なビジネスインサイトを提供します:
利用パターン:どのAPIが頻繁に使用され、どのAPIが十分に活用されていないかを把握します。
課金とコスト最適化:APIの使用状況を監視し、コストを最適化するとともに予期せぬ請求を防止します。
- SLAの遵守
サービスレベル契約(SLA)は、APIの許容可能なパフォーマンスレベルを定義します。監視によりSLAの遵守状況を追跡し、必要に応じて是正措置を講じることができます。
- アラートとインシデント対応
事前定義された閾値(例:高いエラー率や長時間の応答時間)に基づくアラートを設定します。異常が発生した際には通知を受け取り、即座に対応できます。
API監視の課題
多様なエコシステム:現代のアプリケーションは、内部APIと外部APIの組み合わせに依存しており、これらは異なる技術、プロトコル、標準を使用して構築されている可能性があります。この多様なエコシステムを監視するには、様々な形式や通信パターンに対応できるツールが必要です。
動的な環境:APIは、需要に応じてサービスがスケールアップまたはスケールダウンする動的な環境で動作します。監視ツールは、これらの変化に適応し、パフォーマンスへの負荷をかけずにリアルタイムの洞察を提供する必要があります。
レイテンシとパフォーマンス:APIの監視は追加のレイテンシをもたらします。詳細な監視の必要性とAPIパフォーマンスへの影響を最小限に抑えることのバランスは困難です。ツールは関連するメトリクスを効率的に収集する必要があります。
レート制限とスロットリング:APIは不正利用防止のため、しばしばレート制限を設けています。監視ツールはこれらの制限を考慮し、監視中に制限を超過しないよう注意する必要があります。さもなければ、監視対象のAPIそのものを妨害するリスクがあります。
セキュリティと認証:APIの監視には適切な認証と認可が必要です。ツールは保護されたエンドポイントにアクセスするため、APIキー、トークン、セキュリティプロトコル(例:OAuth)を適切に扱う必要があります。
データ量と保持期間:APIはリクエスト/レスポンスのペイロード、ログ、メトリクスなど膨大なデータを生成します。分析用の履歴情報を保持しつつ、このデータ量を効率的に管理することは困難です。
複雑な依存関係:APIは他のサービス、データベース、サードパーティAPIと連携します。監視ツールはこれらの依存関係をトレースし、ボトルネックや障害を正確に特定する必要があります。
エラー処理とアラート:監視ツールは異常、エラー、パフォーマンスの低下を検知する必要があります。意味のあるアラートを設定し、インシデント対応ワークフローと統合することが極めて重要です。
バージョン管理と互換性:APIは進化します。監視ツールはバージョン変更、非推奨化、下位互換性を適切に処理する必要があります。どのバージョンが使用中か、いつ移行すべきかを追跡することが不可欠です。
マルチプロトコル対応:APIは様々なプロトコル(REST、SOAP、GraphQLなど)を使用します。監視ツールはこれらのプロトコルを理解し解釈して、関連情報を抽出する必要があります。
地理的分散:APIは複数の地域やデータセンターに分散している場合があります。監視ツールは遅延の変動や地域差を考慮する必要があります。
ビジネスコンテキスト:監視は技術的な指標だけでなく、ビジネスへの影響を理解することが重要です。ツールはAPIのパフォーマンスをユーザー体験、収益、ビジネス目標と関連付けるべきです。
APIを監視する方法
監視においては、アプリケーションのパフォーマンスの重要な側面を説明する指標を追跡することが重要です。APIに関しては、API関数への呼び出し回数、API関数呼び出しへの応答時間、返されるデータ量などが重要な指標となります。
API モニタリングには主に 2 つの方法があります:シンセティックモニタリングとリアルユーザーモニタリング(RUM)です。
合成監視とは、ユーザーがアプリケーションを利用する際に辿る可能性のある経路をエミュレートするアプリケーションパフォーマンス監視手法です。合成監視はアプリケーションの稼働状況を自動的に監視し、典型的なユーザー行動に対するアプリケーションの応答状況を把握できます。スクリプトを用いて様々なシナリオ、地理的位置、デバイスタイプ、その他の変数に対応した模擬ユーザー行動を生成します。このデータを収集・分析することで、合成監視ソリューションはアプリケーションのパフォーマンスに関する重要な知見を提供します。
同様に、RUMもアプリケーションのユーザビリティとパフォーマンスに関する貴重な洞察を提供しますが、これはエンドユーザーの実際の体験を観察することで実現されます。RUMは単なるデータサンプル以上のものです。顧客のインタラクションやトランザクションのあらゆる側面を捕捉し、開発者がアプリ内での顧客の全旅程を可視化し、リアルタイムデータで問題を迅速に解決することを可能にします。この監視手法はエンドユーザー体験に対するフルスタックの可観測性を提供し、ビジネスパフォーマンスに影響を与える盲点を排除し、開発全体にわたる賢明な意思決定を可能にします。
合成監視とRUMは異なる方法で知見を収集しますが、いずれもアプリケーション開発プロセスとエンドユーザー体験の円滑化を促進します。API監視においてこれらを併用することで、APIパフォーマンスのより包括的な可視化が可能となります。

APIテストは監視を補完します
APIモニタリングは本番環境におけるAPIのパフォーマンス理解に役立ちますが、アプリケーションリリース前にAPIに関連する問題を把握することも重要です。これはテストによって実現されます。
アジャイル手法を採用する開発者は、コードを絶えず更新し、本番サービスに統合しています。この手法には新たなバグが混入するリスクが伴うため、開発者はコードを本番環境にリリースする前にテストすることが重要です。これは開発者が自らが開発したコードに対して日常的に行う作業であり(サードパーティ製APIに対しても同様の対応が必要です)、テスト中に問題が発生した場合、開発者は直近の安定版リリースと問題が発生したリリース間のコード差分を確認することで、迅速に根本原因を特定できます。
テストとモニタリングは、高品質なアプリケーション開発においていずれも重要な役割を果たします。テストはバグが本番コードにリリースされるのを防ぎ、モニタリングはコードが本番環境で実行されている際の障害やパフォーマンス問題を特定するのに役立ちます。
API監視ツールの選定
API監視ツールを選択する際には、すべてのツールが同等の機能範囲や分析能力を備えているわけではない点にご留意ください。以下の主要な機能を確認してください:
- 監視データのサンプルだけでなく、すべてのデータを包括的に分析
- RUM および合成モニタリングの両方に対応
- アプリケーションのパフォーマンスに悪影響を及ぼしているサードパーティ製APIを特定する機能
顧客がAPIをどのように利用し、体験しているかを理解する最善の方法は、すべてのユーザーとAPIのやり取りに関するデータを自動的に収集・追跡することです。API関数呼び出しの平均応答時間といった集計指標に関心がある場合、大規模なサンプルから少数の外れ値を捕捉し損ねても、結果の品質に重大な影響を与える可能性は低いでしょう。しかし、特定地域や単一顧客における遅延の急激な増加といった外れ値に基づいてアラートを発動させたい場合、サンプリング方式ではアラートシステムが機能するために必要なデータを提供できない可能性があります。
RUM(Real User Monitoring)は、サンプリングではなく包括的なリアルタイムデータ収集・分析により、顧客が実際に体験している状況を可視化します。これは障害や速度低下が発生した際に、即座に特定し対応するために不可欠です。合成監視は、パフォーマンスのベースラインを確立する際に有用です。例えば、ある地理的地域におけるAPI呼び出しが、別の地域に比べて一貫して遅い場合があります。これはAPIプロバイダーの実装上の選択によるものであり、近い将来に変化する可能性は低いでしょう。その場合、その地域でのAPIサービスの利用を制限する計画を立てたり、パフォーマンスの低い地域における長いレイテンシを考慮してアラート閾値を調整したりすることが可能です。
Dynatraceソフトウェアインテリジェンスプラットフォームは、AIをあらゆるものに活用するアプローチにより、マルチリクエストHTTPモニターやRUMによる影響のあるサードパーティAPIコールの検出など、API監視機能を提供します。このアプローチにより、API使用状況の包括的な可視化が実現され、お客様が期待する高可用性と一貫したパフォーマンスを確保するために不可欠な情報を提供します。
組織のハイブリッドマルチクラウドにおけるパフォーマンス監視についてさらに詳しく知りたい場合は、オンデマンドウェビナー「ハイブリッドマルチクラウドのネットワークおよびインフラストラクチャパフォーマンス監視」をご覧ください。そして、環境全体の可観測性への取り組みを今日から始めてください。
ご質問がおありですか?
新しいディスカッションを開始するか、Q&Aフォーラムでサポートをお求めください。
フォーラムへ移動