【えーぴーあいげーとうぇい】

APIゲートウェイ とは?

最終更新:
💡 API呼び出しを受けて振り分ける「受付窓口」

クライアントからのAPI呼び出しを受け、適切なサービスへ中継する入口。ルーティング、認証、流量制御などをまとめられますが、対応機能と安全性は製品・設定・構成によって異なります。

📌 このページのポイント
Web App Mobile 外部API API ゲートウェイ 認証・認可 レート制限 ルーティング サービス A サービス B サービス C 外部クライアント マイクロサービス
APIの共通入口。サービス側の権限確認も必要
ひよこ ひよこ
APIがあるなら、ゲートウェイは何のため?
ペンギン先生 ペンギン先生
複数のサービスへの入口をまとめるためだよ。例えば/usersは利用者サービスへ、/ordersは注文サービスへ中継し、共通の処理を受け持つ構成にできるんだ。
ひよこ ひよこ
ペンギン先生 ペンギン先生
役割に重なりがあるよ。負荷分散を中心に使うものもあれば、APIの認証や利用制限などをまとめて扱うものもある。URLによる振り分けはロードバランサーでも可能な製品があるので、名前だけで判断しないでね。
ひよこ ひよこ
入口で認証したら、中では確認不要?
ペンギン先生 ペンギン先生
そうではないよ。本人だと分かっても、その人がその注文を読めるかは別の話。サービス側の認可や、入口を迂回できない構成も必要なんだ。
ひよこ ひよこ
リクエスト数を制限すれば攻撃を防げる?
ペンギン先生 ペンギン先生
過負荷を抑える助けにはなるけれど、すべての攻撃を防ぐ機能ではないよ。制限の単位・超過時の応答・サービス側の処理能力を合わせて設計するんだ。
ひよこ ひよこ
入口が止まったら困るね。
ペンギン先生 ペンギン先生
そうだね。冗長化や監視、タイムアウト、障害時の扱いを考えよう。小さな構成に必ず必要とは限らないので、共通化の利点と複雑さを比べて導入するよ。
もっと詳しく知りたい人へ

認証と認可はどちらをゲートウェイに置く?

トークン検証など共通の本人確認を入口へ集約しつつ、注文の所有者かといった業務データに依存する認可はサービスで行う設計が考えられます。境界は構成によります。クライアントが自由に設定できるヘッダーを、そのまま確認済みの身元として信頼してはいけません。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「APIゲートウェイ」って出てきたら「外部からのAPIリクエストを受けて内部に振り分ける入口のことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「API Gateway」 = APIの入口・関所
💬 担当するAPIの呼び出しを受け付ける入口のイメージ。すべての通信が必ず通るとは限らないよ。

参考資料

← 用語集にもどる