APIゲートウェイとは何か

APIゲートウェイは、クライアントからAPIリクエストを受け取り、定義されたポリシーに基づいて処理して、適切なサービスに送り、応答を結合して、簡素化されたユーザー エクスペリエンスを実現します。通常、複数のマイクロサービスを呼び出し、結果を集約することでリクエストを処理します。また、従来の導入におけるプロトコル間で変換を行うこともできます。

APIゲートウェイは、クライアントからAPIリクエストを受け取り、定義されたポリシーに基づいて処理して、適切なサービスに送り、応答を結合して、簡素化されたユーザー エクスペリエンスを実現します。通常、複数のマイクロサービスを呼び出し、結果を集約することでリクエストを処理します。また、従来の導入におけるプロトコル間で変換を行うこともできます。

画像代替テキストをここに挿入

APIゲートウェイの機能

APIゲートウェイは通常、次のような機能を実装します。

  • セキュリティ ポリシー – 認証、認可、アクセス制御、暗号化
  • ルーティング ポリシー – ルーティング、レート制限、リクエスト/応答の操作、サーキット ブレーカー、ブルーグリーン デプロイメントおよびカナリア デプロイメント、A/Bテスト、ロード バランシング、ヘルス チェック、カスタム エラー処理
  • 可観測性ポリシー – リアルタイムの履歴指標、ロギング、トレース

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

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

アプリケーション デリバリ向けにAPIゲートウェイを導入すると、次のことに役立ちます。

  • 内部アプリケーション アーキテクチャをカプセル化し、各クライアント タイプに合わせたAPIを提供することで、複雑性を低減し、アプリケーションのリリースを高速化
  • 制御ポイントを一元化し、非機能要件をインフラストラクチャ レイヤにオフロードすることで、リクエストの処理とポリシーの施行を合理化して簡素化
  • 詳細なリアルタイムの履歴指標とダッシュボードによりトラブルシューティングを簡素化

APIゲートウェイとマイクロサービス アーキテクチャ

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

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

APIゲートウェイは、認証、認可、監視、ロード バランシング、応答処理などのマイクロサービスの他の機能を提供することで、非機能要件の実装をインフラストラクチャ レイヤにオフロードし、開発者がコア ビジネス ロジックに集中できるようにして、アプリケーションのリリースを迅速化します。

詳細については、当社のブログ「APIゲートウェイを使用したマイクロサービスの構築」をご覧ください。

Kubernetes向けのAPIゲートウェイ

コンテナはマイクロサービスを最も効率的に実行する方法であり、Kubernetesはコンテナ化されたアプリケーションとワークロードを導入および管理するためのデファクト スタンダードとなっています。

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

画像代替テキストをここに挿入

エッジおよびKubernetesクラスタ内にAPIゲートウェイを導入する場合は、Kubernetesネイティブ ツールをAPIゲートウェイとして使用することがベスト プラクティスです。このようなツールはKubernetes APIと緊密に統合されています。また、YAMLをサポートしており、標準のKubernetes CLIを通じて構成できます。例として、NGINX Ingress ControllerNGINX Service Meshなどがあります。

APIゲートウェイとKubernetesの詳細については、当社のブログ「APIゲートウェイ、Ingressコントローラ、サービス メッシュの比較」をご覧ください。

APIゲートウェイと、IngressゲートウェイまたはIngressコントローラ

IngressゲートウェイとIngressコントローラは、Kubernetes Ingress APIの一部であるIngressオブジェクトを実装し、Kubernetesで実行されているアプリケーションを外部クライアントに公開するツールです。ユーザーとアプリケーション間の通信(ユーザーとサービスまたは南北の接続性)を管理します。ただし、Ingressオブジェクト自体の機能は非常に限られています。たとえば、それに添付されるセキュリティ ポリシーの定義はサポートされていません。その結果、多くのベンダーはカスタム リソース定義(CRD)を作成し、Ingressコントローラの機能を拡張して、IngressコントローラをAPIゲートウェイとして使用するなど、進化する顧客のニーズや要件を満たすようにしています。

たとえば、NGINX Ingress Controllerは、VirtualServerとVirtualServerRouteTransportServerPolicyカスタム リソースを備えたKubernetesクラスタのエッジでフル機能のAPIゲートウェイとして使用できます。

APIゲートウェイはGateway APIと同じではない

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

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

NGINXのJenn GileがAPIゲートウェイとKubernetes Gateway APIの違いを説明しているこちらのクイック ビデオをご覧ください。

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

サービス メッシュは、Kubernetesクラスタ内のサービス間の通信(サービス間または東西の接続性)を制御するインフラストラクチャ レイヤです。サービス メッシュは、ロード バランシング、認証、認可、アクセス制御、暗号化、可観測性、接続性の管理のための高度なパターン(サーキット ブレーカー、A/Bテスト、ブルーグリーン デプロイメントおよびカナリア デプロイメント)など、Kubernetesで実行されるサービスのコア機能を提供し、通信が高速で、信頼でき、安全であることを保証します。

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

サービス メッシュの詳細については、当社のブログ「サービス メッシュの選択方法」をご覧ください。

APIゲートウェイとAPI管理

APIゲートウェイAPI管理という用語は、多くの場合、同じ機能を説明する際に「間違って」使用されています。

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

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

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

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をダウンロードしてください。

共通のツール:

  • APIゲートウェイとしてのNGINX Plus – クラウド、オンプレミス、エッジ環境全体に導入できる軽量かつ高パフォーマンスのAPIゲートウェイ
  • F5 NGINX Management Suite API Connectivity Manager – API管理、ガバナンス、セキュリティのための開発者向けツールを使用してAPIゲートウェイを導入および運用

APIゲートウェイとしてのNGINX Plusの使用については、30日間無料のトライアル版をお申込みいただくと共に、当社のブログ「APIゲートウェイとしてNGINXを導入する」をご覧ください。NGINX Management Suiteをお試しになるには、30日間無料のトライアル版をぜひお申し込みください。