API Gateway vs Load Balancer vs Reverse Proxy

API Gateway vs Load Balancer vs Reverse Proxy

一部のコンテンツは LLM によって生成されており、まだ手動で検証されていません。

この 3 つは混同(こんどう) されがちです。すべてクライアントとサーバーの(あいだ)位置(いち) しますが、それぞれ(こと) なる問題(もんだい)解決(かいけつ) します。

機能スペクトラム

  flowchart LR
    subgraph RP["Reverse Proxy"]
        A["SSL 終端"]
        B["キャッシュ"]
        C["圧縮"]
    end
    subgraph LB["Load Balancer"]
        D["トラフィック分散"]
        E["ヘルスチェック"]
        F["フェイルオーバー"]
    end
    subgraph AG["API Gateway"]
        G["認証・認可"]
        H["レート制限"]
        I["変換・分析"]
    end
    RP --> LB --> AG

Reverse Proxy

サーバーの前段(ぜんだん)位置(いち) するプロキシで、クライアントの要求(ようきゅう)()() り、バックエンドサーバーに転送(てんそう) します。汎用的(はんようてき) なソリューションで、コンテンツタイプを() にしません。

コア機能

機能(きのう)説明(せつめい)
SSL 終端(しゅうたん)HTTPS の暗号化(あんごうか) /復号化(ふくごうか)処理(しょり) し、バックエンドの負荷(ふか)軽減(けいげん)
キャッシュ静的(せいてき) リソースをキャッシュし、バックエンドへの要求(ようきゅう)削減(さくげん)
セキュリティバックエンドサーバーの構成(こうせい)隠蔽(いんぺい)
圧縮(あっしゅく)レスポンスを圧縮(あっしゅく) し、転送(てんそう)高速化(こうそくか)

よく使(つか) われるツール

  • Nginx - 高性能(こうせいのう)(ひろ)利用(りよう)
  • HAProxy - 高可用性(こうかようせい)特化(とっか)
  • Caddy - 自動(じどう) HTTPS、簡単(かんたん)設定(せってい)

Load Balancer

トラフィック分散(ぶんさん)特化(とっか) したリバースプロキシ。スケーラビリティ高可用性(こうかようせい) 実現(じつげん) します。

負荷分散(ふかぶんさん) アルゴリズム

アルゴリズム説明(せつめい)
Round Robin順番(じゅんばん)()()
Least Connections接続数(せつぞくすう)(もっと)(すく) ないサーバーに()()
IP Hashクライアント IP に(もと) づきサーバーを決定(けってい)(おな) じユーザーは(おな) じサーバーへ
Weighted(おも) みの比率(ひりつ)()()

L4 vs L7

  flowchart TB
    subgraph L4["Layer 4 (TCP)"]
        L4A["見えるもの:IP + Port"]
        L4B["高速だがルーティングは限定的"]
    end
    subgraph L7["Layer 7 (HTTP)"]
        L7A["見えるもの:URL, Headers, Cookies"]
        L7B["パスに基づき異なるサービスへルーティング可能"]
    end
(そう)利点(りてん)欠点(けってん)
L4高性能(こうせいのう)低遅延(ていちえん)コンテンツに(もと) づくルーティング不可(ふか)
L7柔軟(じゅうなん) なルーティング、豊富(ほうふ)機能(きのう)パフォーマンスオーバーヘッドが(おお) きい

よく使(つか) われるツール

  • AWS ALB - L7 アプリケーション(そう) ロードバランサー
  • AWS NLB - L4 ネットワーク(そう) ロードバランサー
  • GCP Load Balancer - グローバル分散型(ぶんさんがた)

API Gateway

API 管理(かんり)特化(とっか) したリバースプロキシ。マイクロサービスアーキテクチャに最適(さいてき) で、横断的関心事(おうだんてきかんしんじ) (cross-cutting concerns)を一元管理(いちげんかんり) します。

コア機能(きのう)

機能(きのう)説明(せつめい)
認証(にんしょう) /認可(にんか)JWT 検証(けんしょう) 、OAuth、API Key
レート制限(せいげん)API の濫用(らんよう)防止(ぼうし)
リクエスト/レスポンス変換(へんかん)ヘッダー、ボディの修正(しゅうせい) 、フォーマット変換(へんかん)
バージョン管理(かんり)複数(ふくすう) の API バージョンを管理(かんり)
分析(ぶんせき) ・モニタリングAPI の使用状況(しようじょうきょう)追跡(ついせき)

よく使(つか) われるツール

  • Kong - オープンソース、拡張(かくちょう) 可能(かのう)
  • AWS API Gateway - クラウドネイティブ、AWS と統合(とうごう)
  • Apigee - Google 傘下(さんか) 、エンタープライズ()

実際(じっさい) のアーキテクチャ

  flowchart LR
    Client["Client"] --> CDN["CDN"]
    CDN --> Gateway["API Gateway"]
    Gateway --> LB["Load Balancer"]
    LB --> S1["Service A"]
    LB --> S2["Service B"]
    LB --> S3["Service C"]

実際(じっさい) には、この 3 つは()() わせて使用(しよう) され、それぞれの役割(やくわり)() たします。

判断(はんだん) フレームワーク

要件(ようけん)推奨(すいしょう) ソリューション
サービスに複数(ふくすう) のインスタンスLoad Balancer
外部公開(がいぶこうかい) APIAPI Gateway
認証(にんしょう) /レート制限(せいげん)必要(ひつよう)API Gateway
SSL + キャッシュが必要(ひつよう)Reverse Proxy
マイクロサービスアーキテクチャAPI Gateway + Load Balancer

まとめ

  • Reverse Proxy - 汎用(はんよう) プロキシ、SSL、キャッシュ、圧縮(あっしゅく)処理(しょり)
  • Load Balancer - トラフィック分散(ぶんさん)高可用性(こうかようせい)特化(とっか)
  • API Gateway - API 管理(かんり) 専用(せんよう)認証(にんしょう)制限(せいげん)変換(へんかん)処理(しょり)

3 つは競合(きょうごう) ではなく補完関係(ほかんかんけい) にあり、要件(ようけん)(おう) じて()() わせて使用(しよう) します。