API監視とテストの解明:IPMを活用して
IPMによる包括的モニタリングの重要性
2024年11月29日
著者: Leo Vasiliou
翻訳: 逆井 晶子
この記事は米Catchpoint Systems社のブログ記事「Demystifying API Monitoring and Testing with IPM」の翻訳です。
Spelldataは、Catchpointの日本代理店です。
この記事は、Catchpoint Systemsの許可を得て、翻訳しています。
APIはデジタル時代を支える隠れた英雄です。
多くのカスタマーエクスペリエンスにおいて目に見えない存在ですが、それゆえに、お客様視点での監視やテストが難しいと感じるかもしれません。
このブログでは、この難しさを解消し、Internet Performance Monitoring(IPM)がさまざまなAPIテストのユースケースにどのようにアプローチし、信頼性とレジリエンスのあるエクスペリエンスを確保するかを解説します。
ユーザーが商品を閲覧し、カートに追加し、購入できるeコマースプラットフォームを想像してみてください。
あなたのAPIは、これらのトランザクションを支える製品の一部である場合も、サードパーティによって提供される場合もあります。
いずれにせよ、これらのAPIはこれらのインタラクションを処理するコアであり、IPMのような機能を使用して積極的に監視する必要があります。
API監視・テストのユースケース
ここでは、簡単に説明したこのeコマースの例を基に、様々なAPI監視またはテストのユースケースについて説明します。
次に、それぞれのケースでIPMの価値を考える方法を紹介します。
スモークテスト
スモークテストは、APIが作成または大幅に変更された際に、重大な基本的な問題がないかを素早く確認することができます。
これは、主要で基本的な問題をチェックするものであり、網羅的なものではありません。
代わりに、重大な欠陥がないことを確認し、そうでない場合は、さらなるテストや評価が可能と見なします。
このユースケースでは、IPMを使用してこれらのタイプのテストを「コードとして」自動化することを検討してください。
これにより、それらをレビュー、再利用、繰り返しすることが可能になります。
コードとして扱えば、これらのテストはCI/CDのどのフェーズでも呼び出せるようになります。
機能テスト
機能テストは、ユーザーが「今すぐ購入」をクリックしたときに、トランザクションが正しく処理され、支払いが受け入れられ、注文が確認されることを保証します。
これは、システムが設計通りに機能を果たしているかを検証するプロセスです。
各機能が個別に正しく動作すること、そしてシステム全体の出力が正しく機能することを確認する必要があります。
このユースケースでは、IPMの高度な機能(例:変数やAPIトランザクションモニタ)を活用することを検討してください。
例えば、セール対象予定の商品を再確認したい場合、変数を使用することで機能テストの効率を向上させることができます。
さらに、これらの変数は、他のモニタリング設定やトランザクション、テストユースケース全般に再利用できます。
また、ヘッダーやレスポンスの一部を抽出してカスタム指標や変数に変換することもできます。
これは特に、ゲートウェイのバックグラウンドで複数のマイクロサービスを呼び出す機能テストを実行する場合に役立ちます。
統合テスト
統合テストは、例えばペイメントゲートウェイがプラットフォームと通信し、トランザクションを処理することができることを確認するテストです。
これは単純な例ですが、現実には多くのAPIが複雑なインターネットスタックのコンポーネントの間で即座に連携する必要があります。
統合テストは、APIが大規模なアーキテクチャの一部として正常に動作することを保証します。
このユースケースでは、IPMを使用してネットワークの接続性や到達可能性を確認することで、堅牢な統合を実現することができます。
「問題は常にネットワークにある」と言われる場合がありますが、IPMはそれが事実かどうかを判断する助けになります。
ネットワークに問題がなければ、認証やパフォーマンスなど、他の要因が原因である可能性があります。
この点は次のユースケースに関連します。
パフォーマンステスト
パフォーマンステストは、「APIが利用可能で機能している場合、その応答速度は速いのか遅いのか?」という疑問に答えます。
パフォーマンステストでは、ほとんどのパフォーマンスデータがディストリビューション全体にわたるものであり、そのディストリビューション全体のパフォーマンスを確認するために、詳細な分析が必要です。
単一のソースでいくつかのパフォーマンステストを実行するだけでは、ユーザーエクスペリエンスのさまざまな側面でシステムがどのように動作するかを示す指標は得られない可能性があります。
例えば、どのクラウドが応答しているのか、どのISPからアクセスしているのか、あるいは、フロントエンドがAPIの応答をどのように分割して順次表示するかが、パフォーマンスに大きく影響します。
このユースケースでは、IPMがさまざまな次元にわたる高度な分析を提供します。
必要に応じてデータを分割し、任意のパーセンタイルを参照したり、累積関数を作成したり、頻度分布図を描くことで、‘ロングテール’の外れ値を特定することが可能です。
負荷テスト
負荷テストは、多くのユーザーが同時に商品を閲覧し、購入手続きを行う状況をシミュレーションします。
例えば、ブラックフライデーのような大規模なセールイベント中に数千人が同時に購入を試みる場合に、APIが問題なく動作することを確認します。
こうしたテストはイベント前に実施することが推奨されます。
システムが負荷に耐え、遅延やクラッシュが発生しないことを確認する必要があります。
このユースケースでは、IPMが世界最大級のアクティブなテストおよび監視ネットワークへのアクセスを提供します。
このネットワークを使用すると、多くのユーザーが同時にサイト上の機能を実行しようとする状況をシミュレートできます。
IPMのもう一つのユニークな機能は、パフォーマンス指標をサービスレベル目標(SLO)またはエクスペリエンスレベル目標(XLO)と比較し、目標を満たさない場合にアラートを設定することです。
2024年のSRE調査によると、53%の回答者が「遅いことはダウンしていることと同じ」と答え、44%の回答者がパフォーマンスは目標に対して追跡されるべきだと答えました。
レジリエンステスト
レジリエンステストは、API プラットフォーム、アーキテクチャ、またはエコシステム(サードパーティを含む)の可用性、パフォーマンス、到達可能性、信頼性を、悪影響のある条件下でも確保するための継続的な保証プロセスです。
これらの悪影響のある条件は、コード変更やアップデートの結果である場合もあれば、ユーザーの環境が原因である場合もあります。
「唯一不変なのは変化である」という考えに基づいて、継続的なレジリエンステストが行われます。
ユーザーエクスペリエンスがどれほど不安定な環境や接続ポイントを経てもレジリエンスを確保することが求められます。
レジリエンステストは、回帰テストや信頼性テストの考え方を取り入れつつ、インターネットスタック全体を監視し、迅速に解答を得ることに焦点を当てます。
包括的API監視におけるIPMの必要性
これらの多様な監視やテストを実施することで、自社およびサードパーティのAPIが、さまざまな条件下でも堅牢で機能的かつ高性能であることを保証することができます。
これにより、ユーザーにシームレスで安全なショッピング体験を提供することが可能です。
IPMはこのプロセスで重要な役割を果たします。
包括的な監視により、IPMはインターネットスタック全体を詳細かつ包括的に可視化し、APIの相互作用に関わるすべてのコンポーネントが正常に機能していることを保証します。
インターネットスタックは地域ごとに異なる場合が多く、これらには受動型監視ツールでは追跡が難しいサードパーティのリクエストが含まれる場合もあります。
IPMだけが、これら全体を包括的に監視することが可能です。
最後に、他のインターネットスタックテレメトリをシームレスに統合することで、APIなどの個々のコンポーネントがユーザーエクスペリエンスに与える影響を理解することができます。
TracingやWebPageTestなどの製品を活用することで、APIのパフォーマンスを詳細に分析し、ボトルネックを特定して速度と信頼性を最適化することもできます。
CatchpointのIPMでは、これらやInternet Sonar、Internet Stack Mapなどの他のテレメトリとシームレスに統合し、統合された一貫性のあるプラットフォームで管理できます。
一貫性のあるプラットフォームで管理することで、ITチームが潜在的な問題を早期に検出し、運用や顧客満足への影響を未然に防ぐことを可能にします。