APIオブザーバビリティ

APIオブザーバビリティを使って、APIのパフォーマンスを監視し、問題を迅速に特定、解決するとともに、利用状況を把握して最適化につなげる方法をご紹介します。

Postmanの探索的テストに関するサイエンス。イラスト。

APIオブザーバビリティとは?

APIオブザーバビリティとは、APIが生成するテレメトリデータを通じて、その内部状態をどの程度把握できるかを示す概念です。

APIの内部状態を把握できるようにするには、イベントリスナー、エージェント、ライブラリなどを組み込み、メトリクス、イベント、ログ、トレースといったAPIのテレメトリデータを受動的に収集できるようにする必要があります。収集したテレメトリデータは、問題を通知するアラートの作成に利用できるほか、可視化したり、APMツールに転送してさらに詳細な分析を行ったりすることもできます。そのため、APIオブザーバビリティは、APIのパフォーマンスの監視、問題のトラブルシューティング、利用状況の把握、最適化の機会の特定を支援するうえで重要な役割を果たします。

ここでは、APIオブザーバビリティがAPIファーストの開発モデルをどのように支えるのかを解説するとともに、APIオブザーバビリティとAPIモニタリングの違いを明らかにします。続いて、APIオブザーバビリティを構成する4つの柱と、テレメトリデータの代表的なユースケースをご紹介します。最後に、ポートフォリオ内のすべてのAPIのオブザーバビリティ向上に役立つPostman APIプラットフォームの主な機能をご紹介します。

Postman APIポータルウインドウ。イラスト。

APIファーストの世界でAPIオブザーバビリティはどのような役割を果たすのか

現在、多くのチームは、APIを介して提供される内部サービスと外部サービスを組み合わせてアプリケーションを設計、開発しています。このアプローチはAPIファーストと呼ばれ、APIを通じて相互に連携する、個別に管理されたマイクロサービスの普及を後押ししてきました。マイクロサービスアーキテクチャは高いスケーラビリティを備えていますが、分散型であるため、システム全体の状況を把握することは容易ではありません。たとえば、あるマイクロサービスに加えた小さな変更が、連携する別のマイクロサービスに大きな影響を及ぼすことがあります。しかし、システム全体を可視化できなければ、このような問題の原因を特定することは困難です。

APIファーストのアプローチは、マイクロサービスアーキテクチャの導入を支援するだけでなく、サードパーティのAPI利用者に有料サービスとして提供されるAPIの増加にもつながっています。このモデルでは、API提供者は可用性、パフォーマンス、セキュリティに関するサービスレベル契約(SLA)を維持する責任を負います。問題が発生すると、顧客の信頼を損ない、解約につながるおそれがあります。

APIオブザーバビリティは、プライベートAPI、パートナーAPI、パブリックAPIを問わず、すべてのAPIが最大限の価値を発揮できるようにするために必要な情報をチームに提供します。これにより、本番環境におけるマイクロサービス間の可視性のギャップを埋められるだけでなく、APIのパフォーマンスや利用状況の傾向を、売上や利用状況などの重要なビジネス指標と関連付けて分析できるため、ビジネス戦略と技術戦略の整合性を維持できます。


APIオブザーバビリティとAPIモニタリングの違い

APIオブザーバビリティとAPIモニタリングは密接に関連する概念ですが、同じものではありません。APIモニタリングは、あらかじめ定義したメトリクスを収集、可視化し、アラートを設定することで、APIが期待どおりに動作していることを確認するための取り組みです。APIオブザーバビリティはAPIモニタリングを支える概念ですが、その活用範囲はより広範です。予期しない問題のデバッグに役立つコンテキストが豊富なデータを提供するだけでなく、その場での調査や高度な分析も可能にし、ビジネス上の重要な意思決定にも役立ちます。


APIオブザーバビリティの4つの柱。イラスト。

APIオブザーバビリティの4つの柱とは

前述のとおり、APIの内部状態を把握できるようにするには、APIがテレメトリデータを出力できる必要があります。これにより、開発者、サイトリライアビリティエンジニア(SRE)、DevOpsエンジニアは、APIの内部状態をより深く理解できるようになります。テレメトリデータには、メトリクス、イベント、ログ、トレースという4つの主要な種類があり、これらを総称してAPIオブザーバビリティの「4つの柱」と呼びます。個々のテレメトリデータだけではAPIの状態を完全に把握することはできませんが、これらを組み合わせて分析することで、APIの健全性、パフォーマンス、利用状況をより包括的に把握できます。

1. 指標

メトリクスとは、1分ごとや1時間ごとなど、一定の間隔で取得される測定値です。APIの健全性をさまざまな側面から把握するために役立つメトリクスには、多くの種類があります。たとえば、スループットやレイテンシなどのワークメトリクスは、APIがリクエストをどれだけ効率よく処理しているかを把握するのに役立ちます。一方、CPU使用率やメモリ使用量などのリソースメトリクスは、APIのリソース使用状況や負荷の度合いを評価するために利用できます。これらのメトリクスは、早急な対応が必要な問題を検出するのに役立つだけでなく、長期的に分析することで、最適化の機会を見つけることにも役立ちます。

2. イベント

イベントは、新しいホストの起動、コードのデプロイ、設定変更など、システム内で発生した重要な状態の変化を記録するデータです。イベントには、何が起きたのか、いつ発生したのか、どのユーザー、サービス、アセットが関係していたのかといったコンテキスト情報が含まれます。たとえば、コードのデプロイイベントには、タイムスタンプ、実行したユーザー名、デプロイ先の環境、マージされたブランチ名などの情報が含まれます。イベントは、APIのレイテンシやエラー率が急激に上昇した際のトラブルシューティングに役立ちます。問題の根本原因を特定するための手がかりが含まれていることがあるためです。

3. ログ

イベントは重要ではあるものの比較的発生頻度の低いアクティビティを記録するのに対し、ログはシステム内で実行されるすべてのアクションの詳細を記録します。ログはイベントよりもはるかに粒度が細かく、1つのイベントに対して複数のログを関連付けられることも少なくありません。たとえば、コードのデプロイでは、作業ブランチがマージされたタイミング、ビルドの開始、各CIテストの実行など、それぞれの処理が個別のログとして記録されます。

一般的なAPIログには、リクエストメソッド、URL、タイムスタンプ、HTTPステータスコード、レスポンスタイム、リクエスト送信元のIPアドレスなどの情報が含まれます。これらの情報は、特定のエンドポイントやメソッドに関する問題のトラブルシューティングに役立つほか、不審なアクティビティやセキュリティ攻撃の調査にも活用できます。

4. 痕跡

トレースとは、分散システム内でリクエストがたどる経路全体を記録したデータです。すべてのトレースには少なくとも1つのスパンが含まれており、スパンはリクエスト処理における1つのステップを表します。各スパンには、そのステップで発生した内容に関するデータが含まれており、処理にかかった時間やエラーの有無などを確認できます。トレースと、それを構成するスパンは、フレームグラフやサービスマップとして可視化されることが多く、トラフィックの流れやサービス間の依存関係を把握するのに役立ちます。また、システム全体のレイテンシが急激に増加した際に原因となるコンポーネントを特定したり、トラブルシューティング時にログやイベントと関連付けて分析したりすることもできます。


APIオブザーバビリティのユースケース。イラスト。

APIオブザーバビリティはどのようなユースケースに役立つのか

多くのチームは、APIのレイテンシやエラー率がサービスレベル目標(SLO)を満たしていることを確認するために、APIのテレメトリデータを活用しています。このようなパフォーマンスモニタリングは非常に重要ですが、APIオブザーバビリティは、より高度なモニタリングや分析にも役立ちます。たとえば、APIのテレメトリデータは次のような用途で活用できます。

APIの廃止を計画する

APIの廃止(Deprecation)はAPIライフサイクルの一部ですが、APIの利用状況を十分に把握できなければ、適切な計画を立てることは困難です。APIオブザーバビリティを活用すると、1分あたりのAPIリクエスト数やユニークなAPI利用者数を追跡できるため、APIを安全に廃止できるかどうかを根拠に基づいて判断できます。また、このデータは廃止を告知した後にも役立ちます。利用状況が想定どおりに減少していることを確認できるためです。

APIテストでカバーできていない箇所を特定する

APIテストは、APIのメソッド、エンドポイント、インテグレーションが期待どおりに動作していることを確認するのに役立ちます。しかし、実際にユーザーがAPIをどのように利用するかを事前に正確に予測することは難しく、重要なワークフローがテストスイートから漏れてしまうことがあります。APIオブザーバビリティを活用すると、どのエンドポイントやメソッドが最も多く利用されているのか、また、どのようなパラメーターで利用されているのかを把握できるため、テストカバレッジを最大化できます。その結果、重要でありながら見落とされていたユーザージャーニーを網羅し、検証するためのテストを作成できます。

本番環境でAPIのベースラインからの逸脱を検出する

多くのチームでは、APIを本番環境へデプロイする前に、専用のステージング環境へデプロイしてテストを実施します。ステージング環境は本番環境をできる限り忠実に再現するよう設計されているため、チームは実運用時に期待されるAPIのパフォーマンスをベースラインとして確立できます。APIを本番環境へデプロイした後は、本番環境のデータをこのベースラインと継続的に比較することで、想定外の変化や逸脱を発生後すぐに検出できます。


JSONスキーマバリデーションを表示したPostmanモニター。イラスト。

PostmanはAPIオブザーバビリティをどのように支援するのか

Postman APIプラットフォームには、ポートフォリオ内のすべてのAPIのオブザーバビリティ向上を支援するさまざまな機能が用意されています。Postmanでできることは次のとおりです。

  • コレクションベースのモニターを作成する: コレクションベースモニターのモニターを使用して、個々のリクエストやワークフロー全体の健全性とパフォーマンスを監視できます。これらのモニターは手動実行、スケジュール実行、複数リージョンでの実行に対応しているほか、カスタムのリトライロジックもサポートしています。 を使用して監視できます。
  • APIパフォーマンスデータを他のオブザーバビリティツールへ転送する: Datadog New Relic Splunkなどのサードパーティ製オブザーバビリティツールと連携し、Postmanモニターのデータと、環境全体から収集したメトリクス、イベント、ログ、トレースを関連付けて分析できます。
  • フィルター可能なダッシュボードでパフォーマンスデータを可視化する:モニターの実行結果はすべて 組み込みのダッシュボードに表示されるため、パフォーマンスの傾向をひと目で把握できます。また、リクエスト、実行タイプ、実行結果、リージョンごとに表示範囲を絞り込めるため、効率的にトラブルシューティングを行えます。
  • 実行失敗やエラーの通知を受け取る:Postmanモニターでは、リクエストが失敗した際にメール通知を送信するよう設定できます。そのため、スケジュール実行で検出された問題を見逃す心配がありません。
  • Postman Insightsで実際のAPIトラフィックを監視:Postman Insightsは、本番環境で実際のユーザーが行うAPIコールを可視化します。インフラストラクチャのメトリクスだけに依存するのではなく、APIエンドポイントを自動的に検出し、エラー率(4xx/5xx)やレイテンシの傾向を追跡するとともに、失敗したリクエストを取得します。さらに、Repro Modeを使って、リクエストを即座に再現しながらデバッグできます。

PostmanモニターとInsightsを組み合わせることで、APIオブザーバビリティを包括的に実現できます。

  • モニターは、想定どおりに動作していることを検証します(設計したテストや、スケジュール実行・デプロイ時に実行するテスト)。
  • Insightsは、実際に何が起きているかを可視化します(実際のユーザートラフィック、エラー、レイテンシ、再現シナリオ)。

PostmanモニターとInsightsを活用してAPIライフサイクル全体を網羅する方法については、「PostmanにおけるAPIオブザーバビリティのベストプラクティス」をご参照ください。

Postmanを始めよう

APIのアイコンの周りで踊るPostmanaut。イラスト。