APIゲートウェイは、クライアントからAPIリクエストを受け付け、定義済みのポリシーに基づいて処理し、適切なサービスに転送したうえで、レスポンスを統合してユーザーエクスペリエンスを簡素化します。通常は、複数のマイクロサービスを呼び出して結果を集約することで、リクエストを処理します。また、レガシー環境では、プロトコル間の変換も可能です。

APIゲートウェイとは

APIゲートウェイは、クライアントからAPIリクエストを受け付け、定義済みのポリシーに基づいて処理し、適切なサービスに転送したうえで、レスポンスを統合してユーザーエクスペリエンスを簡素化します。通常は、複数のマイクロサービスを呼び出して結果を集約することで、リクエストを処理します。また、レガシー環境ではプロトコル間の変換も可能です。

API Gatewayの機能

APIゲートウェイには、一般に次のような機能が実装されています。

  • セキュリティポリシー – 認証、認可、アクセス制御、暗号化
  • ルーティングポリシー – ルーティング、レート制限、リクエスト/レスポンスの操作、サーキットブレーカー、ブルーグリーンデプロイとカナリアデプロイ、A/Bテスト、負荷分散、ヘルスチェック、カスタムエラー処理
  • オブザーバビリティポリシー – リアルタイムおよび過去のメトリクス、ロギング、トレーシング

アプリおよびAPIレベルのセキュリティをさらに強化するため、APIゲートウェイにWebアプリケーションファイアウォール(WAF)とサービス拒否(DoS)攻撃対策を追加できます。

APIゲートウェイのメリット

アプリケーション配信にAPIゲートウェイを導入すると、次のような効果が期待できます。

  • 内部のアプリケーションアーキテクチャをカプセル化し、クライアントタイプごとに最適化したAPIを提供することで、複雑さを軽減し、アプリのリリースを迅速化
  • 制御ポイントを一元化し、非機能要件をインフラストラクチャ層にオフロードすることで、リクエスト処理とポリシー適用を効率化・簡素化
  • 詳細なリアルタイムおよび過去のメトリクスとダッシュボードでトラブルシューティングを簡素化

API Gatewayとマイクロサービスのアーキテクチャ

マイクロサービスベースのアプリケーションでは、APIゲートウェイがシステムへの単一のエントリーポイントとして機能します。マイクロサービスの前段に配置され、アプリケーションの複雑さをクライアントから切り離すことで、クライアントの実装とマイクロサービスアプリケーションの両方を簡素化します。

マイクロサービスアーキテクチャでは、APIゲートウェイがリクエストのルーティング、合成、ポリシーの適用を担います。一部のリクエストは適切なバックエンドサービスにルーティングするだけで処理し、それ以外のリクエストは複数のバックエンドサービスを呼び出して、その結果を集約することで処理します。

APIゲートウェイは、認証、認可、監視、負荷分散、レスポンス処理など、マイクロサービス向けの機能も提供する場合があります。非機能要件の実装をインフラストラクチャ層にオフロードすることで、開発者が中核となるビジネスロジックに集中できるよう支援し、アプリのリリースを迅速化します。

詳しくは、F5のブログ記事「APIゲートウェイを使用したマイクロサービスの構築」をご覧ください。

Kubernetes向けAPI Gateway

コンテナはマイクロサービスを実行する最も効率的な方法であり、Kubernetesはコンテナ化されたアプリケーションやワークロードのデプロイと管理における事実上の標準です。

システムアーキテクチャとアプリケーション配信の要件に応じて、APIゲートウェイは、Kubernetesクラスターの前段にロードバランサー(マルチクラスターレベル)として、クラスターのエッジにIngressコントローラー(クラスターレベル)として、またはクラスター内にサービスメッシュ(サービスレベル)としてデプロイできます。

エッジおよびKubernetesクラスター内にAPIゲートウェイをデプロイする場合は、KubernetesネイティブのツールをAPIゲートウェイとして使用することがベストプラクティスです。このようなツールはKubernetes APIと緊密に統合され、YAMLをサポートしており、標準のKubernetes CLIで設定できます。たとえば、NGINX Ingress ControllerやNGINX Service Meshがあります。

APIゲートウェイとKubernetesについて詳しくは、ブログ記事「APIゲートウェイ、Ingress Controller、Service Meshの比較」をご覧ください。

API GatewayとIngress GatewayまたはIngress Controller

IngressゲートウェイとIngressコントローラーは、Ingressオブジェクト(Kubernetes Ingress APIの一部)を実装し、Kubernetesで実行されているアプリケーションを外部クライアントに公開するためのツールです。ユーザーとアプリケーション間の通信(ユーザーからサービスへの接続、またはノースサウス接続)を管理します。ただし、Ingressオブジェクト単体の機能は非常に限定的です。たとえば、Ingressオブジェクトに適用するセキュリティポリシーの定義には対応していません。そのため、多くのベンダーはカスタムリソース定義(CRD)を作成し、IngressコントローラーをAPIゲートウェイとして使用する場合も含め、Ingressコントローラーの機能を拡張して、変化するお客さまのニーズや要件に対応しています。

たとえば、NGINX Ingress Controllerは、VirtualServerおよびVirtualServerRoute、TransportServer、Policyのカスタムリソースを使用することで、Kubernetesクラスターのエッジにおけるフル機能のAPIゲートウェイとして利用できます。

API GatewayとGateway APIは同じではない

名前は似ていますが、APIゲートウェイとKubernetes Gateway APIは同じものではありません。Kubernetes Gateway APIは、Kubernetesにおけるサービスネットワーキングの改善と標準化を目的として、Kubernetesコミュニティが管理するオープンソースプロジェクトです。Gateway API仕様は、Kubernetes Ingress APIから発展したもので、Kubernetesアプリを本番環境で公開するためにIngressリソースをデプロイする際のさまざまな課題を解決します。これには、リクエスト処理に関するきめ細かなポリシーを定義する機能や、複数のチームや役割に設定の制御を委任する機能が含まれます。

Gateway API仕様に基づいて構築されたツール(NGINX Kubernetes Gatewayなど)は、特定のマイクロサービスへのリクエストのルーティング、トラフィックポリシーの実装、カナリアデプロイやブルーグリーンデプロイの有効化といったユースケースで、APIゲートウェイとして使用できます。

NGINXのJenn Gileが解説する短い動画で、APIゲートウェイとKubernetes Gateway APIの違いをご覧ください。

サービスメッシュとAPIゲートウェイの比較

A サービスメッシュは、Kubernetesクラスター内のサービス間通信(サービス間接続または東西方向の接続)を制御するインフラストラクチャレイヤーです。サービスメッシュは、通信の高速性、信頼性、セキュリティを確保するため、Kubernetes上で稼働するサービスに、負荷分散、認証、認可、アクセス制御、暗号化、可観測性のほか、接続を管理するための高度なパターン(サーキットブレーカー、A/Bテスト、ブルーグリーンデプロイ、カナリアデプロイ)などの中核機能を提供します。

アプリケーションやサービスの近くにデプロイすることで、サービスメッシュは、Kubernetesにおけるサービス間通信のための、軽量でありながら包括的な分散APIゲートウェイとして使用できます。

サービスメッシュの詳細については、F5のブログ記事「サービスメッシュの選び方」をご覧ください。

APIゲートウェイとAPI管理

「APIゲートウェイ」と「API管理」という用語は、同じ機能を表すものとして使われることがよくありますが、これは正確ではありません。

APIゲートウェイは、対象のアプリケーションやサービスに対するクライアントリクエストを表すAPI呼び出しの、データプレーンにおけるエントリポイントです。通常、認証、認可、アクセス制御、SSL/TLSオフロード、ルーティング、負荷分散など、定義されたポリシーに基づいてリクエストを処理します。

API管理とは、個々のAPIをデプロイ、文書化、運用、監視するプロセスです。通常は、APIゲートウェイと開発者ポータルに適用するポリシーを定義する管理プレーンソフトウェア(APIマネージャーなど)を使用して行います。

ビジネス要件と機能要件に応じて、APIゲートウェイは、データプレーン内のスタンドアロンコンポーネントとして導入することも、F5 NGINX Management Suite API Connectivity Managerなどの統合API管理ソリューションの一部として導入することもできます。

APIゲートウェイを選択する際の考慮事項

APIゲートウェイの要件を決定する際には、考慮すべき重要な要素がいくつかあります。

  • アーキテクチャ – APIゲートウェイのデプロイ先や、クラウドプロバイダーの組み込みオプションを使用するかどうかによって、ツールの選択が左右される場合があります。プラットフォームやランタイムに依存しない、柔軟なAPIゲートウェイが必要ですか?
  • パフォーマンス – トラフィック量の多いWebサイトやアプリケーションでは、パフォーマンスが極めて重要です。お使いのAPIゲートウェイは、必要な高スループットと低レイテンシを実現できますか?
  • スケーラビリティ – APIゲートウェイには、増大するトラフィック需要に対応して容易に拡張できることが求められます。APIを常に高速かつ利用可能な状態に保つために、APIゲートウェイは垂直方向(高スループット)と水平方向(高可用性)の両方のスケーリングに対応していますか?
  • セキュリティ – APIゲートウェイは、ゼロトラストアーキテクチャの重要な要素です。お使いのAPIゲートウェイは、アクセス制御(AuthN/AuthZ)、mTLSに加え、統合WAFや、ポジティブセキュリティを実現するOpenAPIスキーマ検証などの高度なセキュリティ機能を提供していますか?
  • コスト – APIゲートウェイの総所有コスト(TCO)を把握します。カスタムソリューションを構築・保守する場合と、エンタープライズグレードのAPIゲートウェイを購入する場合では、コストとトレードオフにどのような違いがあるでしょうか。

NGINXがどのように役立つか

NGINXでは、ユースケースやデプロイパターンに応じて、APIゲートウェイをデプロイおよび運用するための複数の選択肢を提供しています。
Kubernetesネイティブツール:

  • NGINX Ingress Controller – APIゲートウェイ、アイデンティティ、オブザーバビリティの各機能を使用して、Kubernetesクラスターのエッジにおけるアプリケーション接続を管理します
  • NGINX Service Mesh – サービス間の接続、セキュリティ、オーケストレーション、オブザーバビリティを実現する、開発者にとって使いやすいソリューション

まず、NGINX App Protect WAFおよびDoSを搭載したNGINX Ingress Controllerの30日間無料トライアルをお申し込みください。また、常時無料のNGINX Service Meshをダウンロードしてご利用いただけます。

汎用ツール:

  • NGINX Plus をAPIゲートウェイとして活用 – クラウド、オンプレミス、エッジ環境に導入できる、軽量で高性能なAPIゲートウェイ
  • F5 NGINX Management Suite API Connectivity Manager – 開発者にとって使いやすいAPI管理、ガバナンス、セキュリティのためのツールを使用して、APIゲートウェイを導入、運用

NGINX PlusをAPIゲートウェイとして使用する方法について詳しくは、30日間の無料トライアルをお申し込みのうえ、F5のブログ記事「NGINXをAPIゲートウェイとして導入する」をご覧ください。NGINX Management Suiteをお試しになるには、30日間の無料トライアルをお申し込みください。