概要
API ゲートウェイは、クライアントとバックエンドサービスのコレクションの間に位置する API 管理ツールです。この場合、クライアントはユーザーのデバイス上のアプリケーションであり、バックエンドサービスは企業のサーバー上のサービスです。API はアプリケーション・プログラミング・インタフェースの略であり、アプリケーション・ソフトウェアを構築および統合するための一連の定義とプロトコルです。
API ゲートウェイは、アプリケーション提供のコンポーネント (ユーザーにアプリケーションを提供するサービスの組み合わせ) であり、リバースプロキシとして機能します。すべてのアプリケーション・プログラミング・インタフェース (API) 呼び出しを受理して、それらを実行するために必要なさまざまなサービスを集約し、適切な結果を返します。つまり、API ゲートウェイは、ユーザーからの API 呼び出しをインターセプトし、適切なバックエンドサービスにルーティングするソフトウェアです。
API ゲートウェイを使用する理由
エンタープライズ API は、API ゲートウェイを介してデプロイされることがほとんどです。API ゲートウェイは通常、ユーザー認証、レート制限、統計など、API サービスのシステム全体で使用される一般的なタスクを処理します。
API サービスの最も基本的な機能は、リモート要求を受け入れ、応答を返すことです。しかし、実際はそのようなシンプルなものではありません。大規模な API をホストする場合には、いろいろと考慮すべきことがあります。
- API を過度の使用や乱用から守るために、認証サービスとレート制限を使用します。
- ユーザーが API をどのように使用しているかを理解するために、分析ツールと監視ツールを追加します。
- 収益化された API があれば、課金システムに接続する必要があります。
- マイクロサービス・アーキテクチャを導入している場合は、1 つの要求で数十の異なるアプリケーションへの呼び出しが必要になることがあります。
- 時間の経過とともに、API サービスは追加されたり廃止されたりしていきますが、顧客はそれでもすべてのサービスが 1 カ所にあることを望むでしょう。
このような複雑さと対峙しつつ、顧客にシンプルで信頼できるエクスペリエンスを提供することが課題です。API ゲートウェイを使うことにより、顧客のインタフェースをバックエンド実装から分離できます。API ゲートウェイは顧客の要求を複数の要求に分割し、それらを適切な場所にルーティングして応答を生成し、すべてを追跡します。
API 管理における API ゲートウェイの役割
API ゲートウェイは、API 管理システムの一部です。API ゲートウェイは、着信するすべての要求をインターセプトし、さまざまな必要機能を処理する API 管理システムを介してそれらを送信します。
API ゲートウェイの機能は、実装ごとに異なります。一般的な機能には、認証、ルーティング、レート制限、請求、監視、分析、ポリシー、アラート、セキュリティなどがあります。API ゲートウェイには次のようなメリットがあります。
低レイテンシー
API ゲートウェイは、受信リクエストを分散し、SSL 終了やキャッシュなどの一般的なタスクをオフロードすることで、バックエンドサービス全体のトラフィックルーティングと負荷分散を最適化し、最適なパフォーマンスとリソース使用率を確保します。これにより、API ゲートウェイはサーバーの負荷と帯域幅の使用量を最小限に抑え、追加のサーバー容量とネットワーク帯域幅の必要性を軽減し、ユーザーエクスペリエンスを向上させます。
トラフィック管理
API ゲートウェイは、受信リクエストのレートと量を制御し、最適なパフォーマンスとリソース使用率を確保できるように設計されたさまざまなメカニズムを通じてトラフィックを調整し管理します。
- レート制限ポリシーは、クライアントまたは API キーごとに、特定の期間内に許可されるリクエストの最大数 (1 秒、1 分、1 時間あたりのリクエスト数など) を指定し、バックエンドサービスを過負荷から保護します。
- リクエスト・スロットリング・ポリシーは、最大リクエストレート、バースト許容量、クォータなど、リクエストトラフィックを規制するためのルールと制限を定義します。
- 同時実行制御ポリシーは、バックエンドサーバーが同時に処理できる同時接続またはリクエストの最大数を指定します。
- サーキット・ブレーキング・ポリシーは、バックエンドサーバーの健全性と応答性を監視し、障害が発生したサービスまたは低速なサービスからトラフィックを一時的にブロックまたはリダイレクトして、連鎖的な障害を防ぎ、システム全体の安定性を維持します。
- API ゲートウェイからの動的な負荷分散は、サーバーの健全性を継続的に監視し、トラフィックルーティングをリアルタイムで調整して需要の急増に対処し、応答時間を最小限に抑え、スループットを最大化します。
グローバルなネットワーク・インフラストラクチャの活用
API ゲートウェイは、トラフィックパターンやワークロード需要の変化に応じて、インフラストラクチャ・リソースを動的に拡張できます。そのため API ゲートウェイにより、企業はリソース使用率を最適化し、インフラストラクチャのコストを最小限に抑えることができ、実際に使用したリソースに対してのみ料金を負担するだけで済みます。
費用対効果
API ゲートウェイは、API トラフィックの処理、セキュリティポリシーの適用、トラフィック管理ルールの実装、およびバックエンドサービスとの統合促進のための一元化されたプラットフォームを提供することで、アプリケーション提供と API 統合の費用対効果を管理する役割を果たします。API ゲートウェイにより、費用対効果を維持するためにサービスを段階的に利用することもできます。API はいくつかの点でアプリケーションの費用対効果に影響を与える可能性があり、その影響は API の種類に応じて異なります。
- 柔軟性:HTTP API はより汎用的であらゆる HTTP メソッドを使用できるため、開発の単純化と柔軟性が実現し、開発コストが削減される可能性があります。REST API は特定のアーキテクチャ原則と慣例に準拠しているため、適切に設計して実装するには追加の労力と専門知識が必要となり、開発コストが増加する可能性があります。
- インフラストラクチャ:HTTP API は柔軟性があるため、インフラストラクチャのコストが低くなる可能性があります。REST API では、機能をサポートするために追加のインフラストラクチャ・コンポーネントまたはサービスが必要になる場合があり、インフラストラクチャのコストが増加する可能性があります。
- スケーラビリティ:HTTP API はサーバーまたはインスタンスを追加することで水平方向に拡張可能で、特に自動スケーリング機能を備えたクラウド環境において、より費用対効果の高いスケーラビリティを実現できる可能性があります。REST API では、ステートレス性、キャッシュ、分散アーキテクチャといった考慮事項によってスケーリング要件が複雑になり、水平方向のスケーラビリティを実現するために追加のインフラストラクチャ・リソースまたはサービスが必要になる場合があり、コストが増加する可能性があります。
API ゲートウェイと Kubernetes の連携方法
Red Hat OpenShift のような Kubernetes を利用したソリューションは、アプリケーションのコンテナ化とオーケストレーションを最も効率的に実行できるため、API ゲートウェイは、Kubernetes クラスタ上のサービスへのトラフィックを管理およびルーティングする重要なコンポーネントになります。以下のタスクを実行することで、そのようなコンポーネントとして機能します。
- Ingress コントローラーとなり、クラスタへの受信 HTTP トラフィックをインターセプトし、定義されたルールと設定に基づいて適切なサービスにルーティングします。
- Kubernetes の DNS ベースのサービス検出を利用して、手動設定を必要とせず、トラフィックを検出してバックエンドサービスにルーティングします。これにより、Kubernetes ネイティブのサービスとのシームレスな統合が可能になり、クラスタ内での動的なスケーリング、サービス検出、フェイルオーバー処理が容易になります。
- 高度なトラフィック管理ポリシーを実装して、Kubernetes にデプロイされたサービスへのトラフィックフローを制御します。
- 認証、アクセス制御、認可、暗号化などのセキュリティポリシーを適用して、Kubernetes 上にデプロイされたサービスを不正アクセスやサイバー脅威から保護します。
- Kubernetes 上にデプロイされたサービス (リクエストログ、メトリクス収集、分散トレースなど) のトラフィックパターン、パフォーマンスメトリクス、エラー率を可視化することで、可観測性と監視機能を提供します。
- Istio や Linkerd などのサービスメッシュと統合して機能を拡張し、外部イングレス、エッジセキュリティ、グローバルトラフィック管理などの追加機能を提供し、Kubernetes サービスと外部クライアント間のシームレスな相互運用性を確保します。
API ゲートウェイによる DevOps およびサーバーレス環境のサポート
API 管理における Red Hat のサポート内容
Red Hat の軽量で包括的なモジュール式 API 管理ソリューションは、独自のオープンソースでオープンスタンダードを使用しており、オンプレミス、クラウド、ハイブリッドのいずれの環境でも利用できます。オープンソース・テクノロジーと独自の開発モデルへの深い思い入れを持つ Red Hat のポートフォリオは、Red Hat のエンジニア、お客様、独立系のソフトウェアやハードウェアのベンダー、パートナーなど、多様なコミュニティによる広範なテストを経ています。Red Hat には 2 つの API 管理ソリューションがあります。
- Red Hat OpenShift API Management は、ホスト型およびマネージド型の API 管理サービスで、Red Hat OpenShift Dedicated (エンタープライズ Kubernetes アプリケーション・プラットフォームである Red Hat OpenShift のフルマネージドサービス) のアドオン製品として提供されます。
- Red Hat® 3scale API Management は、API の共有、保護、分散、制御、収益化を容易にする API 管理プラットフォームです。3scale API Management は、ハイブリッド・アーキテクチャ (オンプレミス、クラウド、またはその 2 つの組み合わせ) をスケーリングおよびサポートするように設計されています。