APIプロキシとは
英語によるオリジナルはこちらでご覧いただけます。
APIプロキシは、クライアントとAPIの仲立ちとして、APIのエントリポイントを一元化します。あわせて、APIを強化するセキュリティ、キャッシュ、レート制限などの機能を、API自体に修正を加えることなく適用できます。さらに、さまざまなユーザーやパスから送られてくるリクエストを、ニーズに合ったバックエンドサービス宛てに転送するとともに、認証(キー認証、OAuthフローなど)やトラフィック管理(レート制限など)を並行して処理するなど、APIプロキシは多彩な機能を持ちます。
この記事では、APIプロキシの定義、種類、仕組み、主なユースケース、課題や、APIプロキシを選ぶときに考慮すべき点について説明します。
APIプロキシの仕組み
APIプロキシは、クライアントとバックエンドサービス(例えばAPI)の仲立ちとして動作します。クライアントがAPIプロキシ経由でAPIにリクエストを送信するときには、通常次のような手順で処理が進みます。
- クライアントがAPIプロキシにリクエストを送信します。このリクエストには、エンドポイントのURL、ホスト情報などの必要な情報を収めたヘッダー、HTTPメソッド、その他のパラメータ(クエリパラメータ、またはリクエスト本体内のパラメータ)といった情報が格納されています。
- APIプロキシがリクエストを受信します。ここで基本的なセキュリティを適用できます。
- APIプロキシがバックエンドのAPIにリクエストを転送します。具体的には、APIとの間で接続を確立し、その接続を通じてリクエストを送信します。
- バックエンドのAPIがリクエストを受信して処理し、同じ接続を通じてAPIプロキシにレスポンスを返します。
- APIプロキシがレスポンスを受信して処理します。その際、必要に応じて、クライアントと互換性のある形式にレスポンスを変換します。
- APIプロキシがクライアントにレスポンスを返します。クライアントはこのレスポンスを受信し、必要な処理を行います。
この手順を図示すると次のようになります。

APIプロキシは、クライアントとバックエンドサービスの間の抽象化レイヤーとして機能します。このレイヤーがあることによって、バックエンドのホスティング環境の詳細を知らないクライアントがAPIにアクセスできるようになります。
またAPIプロキシには、セキュリティ、レート制限、プロトコル変換などの付加機能もあります。API自体に変更を加えることなく、APIの信頼性、スケーラビリティ、セキュリティを強化できます。
プロキシの種類
プロキシは機能に応じて種類が分かれています。一般的に使われるのは例えば次のような種類のプロキシです。
- リバースプロキシ:クライアントとサーバーの間の仲立ちとして、サーバーの代わりにリクエストを処理するプロキシです。インターネットにサーバーを直接公開するのを防ぐ用途や、SSL暗号化の処理、パフォーマンス向上のためのレスポンスキャッシュに使用できます。
- SSLプロキシ:サーバーやクライアントの代理としてデータの暗号化と復号を行うことができるプロキシサーバーです。
- 透過型プロキシ:その名のとおり、クライアントから存在が見えないプロキシです。つまりクライアントは、自らのリクエストがプロキシサーバーを経由しているとは思っていません。
APIプロキシの主なユースケース
APIプロキシの主なユースケースは次のとおりです。
- リクエストの転送:プロキシ(APIプロキシを含む)の最も重要な機能は、受信したリクエストを適切なバックエンドに転送することです。APIプロキシの場合は、背後にあるAPIやサービスにリクエストを転送します。
- セキュリティ:APIの基本的なセキュリティをAPIプロキシで適用できます。
- キャッシュ:APIからのレスポンスをAPIプロキシにキャッシュできます。その後のリクエストの応答時間を短縮し、全体のパフォーマンスを向上させることができます。
- ロードバランシング:ロードバランシング機能を持つAPIプロキシは、サーバーの負荷、ネットワークレイテンシ、地理的な場所などの要素に基づいて、バックエンドの適切なサーバーにリクエストをルーティングします。
- SSL終端処理:APIプロキシは背後のAPIに代わってSSL終端処理に対応できます。
APIプロキシを使用するうえでの課題
APIプロキシの利用で生じる一般的な課題には、次のようなものがあります。
- 機能セットの不足:一般にAPIプロキシは、APIゲートウェイに比べて、APIの完全なライフサイクル管理に関する機能が限られています。例えば、レート制限やスロットリング、認証、バージョン管理などの機能は、通常はAPIプロキシには装備されていません。
- パフォーマンスのオーバーヘッド:クライアントとバックエンドサービスの間をAPIプロキシが仲立ちすることで、APIのリクエストまたはレスポンスのサイクルに余分なオーバーヘッドが加わる可能性があります。特に、レート制限、変換、キャッシュなどの機能を実行する場合に当てはまります。このオーバーヘッドによって、レイテンシの増加やスループットの低下、全体のパフォーマンスへの影響が生じる可能性があります。
- セキュリティリスク:APIプロキシには基本的なセキュリティ機能は装備されています。しかし、他のOAuthシステムとの連携が必要な場合もある大企業にとっては、通常は十分なレベルのセキュリティではありません。
- 開発体験:APIプロキシは、例えば開発者ポータル、バックエンドのAPIの使用登録、開発者向けの認証情報の自動生成など、開発体験を強化して市場投入サイクルを加速するための機能を完全には備えていません。
APIプロキシの選択で考慮すべき点
- 統合:既に導入済みのシステムと適切に統合できるプロキシを選ぶことが大切です。特に、ユーザーデータを扱う認証/認可システムとの統合は重要です。また、既存のオブザーバビリティツールとの統合にも同じことが言えます。
- コスト:APIプロキシは、無料のオープンソースソリューションから、高価なエンタープライズレベルの製品まで、コストに大きな幅があります。自社の予算内に収まり、必要な機能を備えているAPIプロキシを選ぶことが重要です。APIプロキシのコストは、エンタープライズレベルの製品のライセンスコストと、APIプロキシの運用にかかるインフラコストに分かれます。両方を検討することが大切です。
- セキュリティ機能:認証、認可、暗号化など、堅牢なセキュリティ機能を備えたプロキシを選ぶことが重要です。こうした機能のない製品を利用すると、サービスがセキュリティ攻撃にさらされるリスクがあります。
- 使いやすさ:ユーザーフレンドリなインターフェースとドキュメントを備えた使いやすいプロキシを選ぶことが重要です。APIプロキシの使いやすさは千差万別です。ソリューションによっては、設定やメンテナンスに高度な技術知識が必要となります。
- パフォーマンス:APIプロキシは、クライアントとバックエンドサービスの仲立ちとして機能します。そのため、ネットワークのホップ数が1つ増え、パフォーマンスのオーバーヘッドが生じることがあります。パフォーマンスとスケーラビリティに優れた、大量のトラフィックを処理できるプロキシを選ぶことが重要です。
まとめ
APIプロキシは、クライアントとAPIの仲立ちとして、APIへのアクセスポイントを一元化します。また、セキュリティ、キャッシュ、レート制限などの追加機能を、API自体に修正を加えることなく適用できます。
プロキシの一般的な種類には、リバースプロキシ、SSLプロキシ、透過型プロキシがあり、それぞれ機能が異なります。
クライアントがAPIプロキシ経由でAPIにリクエストを送信すると、APIプロキシはそのリクエストをバックエンドのAPIに転送します。その後、APIプロキシは、そのリクエストに対するレスポンスをクライアントに転送します。
APIプロキシにより、APIのセキュリティ、キャッシュ、ロードバランシング、レート制限、ロギングの機能を強化できます。しかし、APIプロキシはAPIゲートウェイほど機能が豊富ではありません。また、複雑な設定、パフォーマンスのオーバーヘッド、セキュリティリスクなどの課題が生じる場合があります。
開発者のアジリティを確保し、コンプライアンスとセキュリティを維持しましょう。APIファーストの企業を目指すうえで、Kongがどのように力になるかを実際に体験して下さい。