この用語をシェア
API Gatewayとは
API Gateway(APIゲートウェイ)とは、複数のマイクロサービスやAPIエンドポイントの前面に配置され、APIアクセスを一元管理・制御するサービスです。クライアントからのAPIリクエストを受け付け、適切なバックエンドサービスへルーティングしながら、認証、ログ記録、レート制限などの横断的な機能を提供します。
主な機能
1. APIルーティング
クライアントからのリクエストを適切なバックエンドサービスにルーティングします。パスベース、ヘッダーベース、クエリパラメータベースなど、様々なルーティング条件を設定できます。
2. 認証・認可
APIキー、JWT(JSON Web Token)、OAuth 2.0などによる認証機能を提供。リクエストを処理する前に、呼び出し元の身元確認とアクセス権限の検証を行います。
3. レート制限(スロットリング)
特定のクライアントやAPIキーに対して、単位時間あたりのリクエスト数を制限。システムの過負荷を防ぎ、公平なリソース利用を実現します。
4. ログ記録・監視
すべてのAPIリクエストとレスポンスを記録し、パフォーマンス監視、エラー追跡、利用状況分析を可能にします。
メリット
- 一元管理: 認証、ログ、レート制限などの機能をAPI Gatewayに集約し、各マイクロサービスの責務を簡素化
- セキュリティ強化: バックエンドサービスを直接公開せず、API Gatewayを経由することでセキュリティを向上
- 運用効率化: APIの利用状況やパフォーマンスを一箇所で監視・分析可能
- 開発生産性: 横断的な機能をAPI Gatewayに委ねることで、ビジネスロジックの開発に集中
主要なAPI Gatewayサービス
実装例(AWS API Gateway)
# AWS CLIを使用したAPI Gateway作成例
aws apigateway create-rest-api --name "MyAPI"
# リソース作成
aws apigateway create-resource \
--rest-api-id "api-id" \
--parent-id "root-resource-id" \
--path-part "users"
# メソッド作成
aws apigateway put-method \
--rest-api-id "api-id" \
--resource-id "resource-id" \
--http-method GET \
--authorization-type "AWS_IAM"
# Lambda統合設定
aws apigateway put-integration \
--rest-api-id "api-id" \
--resource-id "resource-id" \
--http-method GET \
--type AWS_PROXY \
--integration-http-method POST \
--uri "arn:aws:apigateway:region:lambda:path/functions/function-arn/invocations"
設計時の考慮点
⚠️ 重要な設計ポイント
- 単一障害点: API Gatewayが障害となると全APIがアクセス不能になるリスク
- パフォーマンス: 追加のネットワークホップによるレイテンシ増加
- 運用複雑性: ルーティング設定やセキュリティポリシーの適切な管理
- コスト: リクエスト数に応じた従量課金モデルのコスト計算
関連技術
マイクロサービス
API Gatewayの主要な適用アーキテクチャ
ロードバランサー
トラフィック分散との組み合わせ
サーキットブレーカー
障害時の自動復旧機能
