マイクロサービス アーキテクチャにおける API ゲートウェイの概要

マイクロサービス アーキテクチャにおける API ゲートウェイの概要
API Gateway は、複数の Kubernetes クラスターとクラウドに分散されたマイクロサービスの管理を簡素化します。アーキテクチャ、機能、利点について詳しくは、以下をお読みください。

アーキテクト、クラウド エンジニア、DevOps 担当者の中には、「マイクロサービスは小さなモノリスである」とよく言う人がいます。これは、多数のサービス、特にそれらの管理と構成におけるネットワーク ルールとセキュリティの側面を扱う複雑さに起因します。

分散システム内の複数のクラスターとクラウドにまたがるマイクロサービスにクライアントがリクエストを送信する場合、セキュリティと正しいルーティング ルールを確保するために各リクエストを追跡するのは面倒な作業になります。理想的には、バックエンド サービスはビジネス ロジックのみを提供する必要があるため、これを実行するべきではありません。ここで、API ゲートウェイ (すべてのリクエストに対する単一のエントリ ポイント) が登場します。API ゲートウェイとは何か、またそれが提供する機能と利点について見てみましょう。

API ゲートウェイとは何ですか?

API ゲートウェイは、クライアントとマイクロサービス間のサーバー (または L7 プロキシ) であり、すべてのクライアントのシステムへの集中エントリ ポイントとして機能します。これは、クライアント API 呼び出しを受け入れ、適切なマイクロサービスに転送するリバース プロキシです (下の図 A を参照)。

API ゲートウェイは各クライアントに API を提供することで、基盤となるシステムの複雑さをカプセル化し、クライアントが特定のサービスを呼び出す代わりにシステムと通信できるようにします。また、トラフィックがサービスに到達する前にセキュリティ チェック (認証と承認) を実行するため、サービスはコア機能に集中できます。

図 A – マイクロサービス アーキテクチャにおける API ゲートウェイ実装の概念図

マイクロサービスにおける API ゲートウェイの必要性

クライアントとマイクロサービス間の直接通信パターンによって生じる課題により、API ゲートウェイが普及しました。いくつか見てみましょう。

サービス検出とトラフィックルーティングの問題

クライアントからマイクロサービスに直接接続するには、クライアントがサービス インスタンスの特定のエンドポイントを認識している必要があります。しかし、サービスの動的なスケーリング (デスケーリング) により、エンドポイントを追跡するとクライアント側の複雑さが増します。さらに、クライアントがサービスに結合されている場合は、クライアント側で構成の変更が必要になるため、スケーリングが問題になります。さらに、クライアントがサービスを直接呼び出す場合、地理ルーティングなどの特定の属性に基づいてルーティング トラフィックを構成することは困難です。

秘密の質問

クライアントとサービス間の直接通信のためにサービス エンドポイントを公開すると、セキュリティ上の懸念が生じます。これにより、侵入者の攻撃対象領域が拡大し、バックエンド サービスがパケット スニッフィングや中間者攻撃などの脅威に対して脆弱になります。さらに、マイクロサービスへの直接クライアントは、ビジネス ロジックの提供に集中するのではなく、API 呼び出しの認証と承認の負担をサービスに負わせます。

相互運用性に影響を与える複数のプロトコル

マイクロサービス アーキテクチャが提供する柔軟性により、開発者は任意の言語 (Python、Java、Go) を使用してサービスを構築できます。同様に、さまざまな API タイプ (REST、gRPC など) を使用してこれらのサービスを実装することもできます。クライアントからマイクロサービスへの直接通信パターンでは、クライアントは通信するためにさまざまなプロトコルを理解して使用する必要があります。これにより、クライアント アプリケーションにさらに多くのコードとロジックが必要になるため、複雑さが増します。

往復による遅延

Amazon.com の製品ページを考えてみましょう。製品の価格、数量、レビューなどの一部の属性は、バックエンドで異なるサービスとして展開されます。クライアントがサービスを直接呼び出した場合、上流のサービスからの応答をキャッシュするメカニズムがないため、必要な情報を取得するには各サービス (製品価格、レビュー、数量など) に個別のリクエストを行う必要があります。これらの呼び出しにより、複数の接続を確立するためのオーバーヘッドが追加され、これらのネットワーク要求によって発生するラウンドトリップによって待ち時間が増加し、ユーザー エクスペリエンスが最適ではなくなります。
API ゲートウェイのアーキテクチャは、クライアントとマイクロサービスを直接接続する際の課題をある程度軽減し、さまざまな機能を提供します。

API ゲートウェイ トラフィック

API ゲートウェイは、通常クライアントによって要求されるフロントエンド マイクロサービスからトラフィック管理を抽象化する L7 プロキシです。 API ゲートウェイは HTTP メッセージを読み取って理解できるため (次の図を参照)、トラフィックに対してフィルターを適用したりアクションを実行したりできます。

HTTP メッセージ構造

リクエストは API ゲートウェイで複数のステップを通過します。次の図 (図 B) は、Kubernetes クラスターのエッジにある API ゲートウェイと、リクエストが流れるステージを示しています。

図 B – API ゲートウェイを経由した受信 gRPC リクエストのトラフィック フロー

  • リクエストの検証:まず、API ゲートウェイは、リクエスト メソッド、ヘッダー、本文をチェックして受信リクエストを検証し、事前定義されたルールに準拠していることを確認します。さらに、ゲートウェイの許可リストと拒否リストに基づいてリクエストをホワイトリストまたはブラックリストに登録し、厳格なアクセス制御を実施します。
  • 認証と承認 (AuthN/Z):ゲートウェイは、API キー (認証) などの資格情報を検証して認証されたリクエストを認証および承認し、RBAC (ロールベースのアクセス制御) などの承認ポリシーを適用します。 API Gateway は、IdP (アイデンティティ プロバイダー) の助けを借りて、多要素認証 (MFA) などの徹底的な認証 N/Z チェックを実行することもできます。
  • サービス検出: API ゲートウェイは、サービス検出コンポーネントを使用して、承認リクエストに適切なバックエンド サービスを検索します。これは、サービス レジストリを照会するか、動的 DNS を使用することによって行われます。
  • プロトコル変換: API ゲートウェイは、必要に応じてクライアントとマイクロサービス間のプロトコルを変換できます。上の図では、クライアントが gRPC リクエストを送信し、それが「ショッピング カート」サービスが理解できるように REST に変換されます。さらに、ゲートウェイは、応答をクライアントに返す前に、応答を公開プロトコル (ここでは、REST から gRPC 形式) に変換します。
  • 動的ルーティング: API ゲートウェイは、バックエンド サービスを見つけると、適切なサービス インスタンスまたはロード バランサにリクエストをルーティングし、必要に応じてリクエスト プロトコルを変換します。通常、ゲートウェイの構成にはルーティング ルールが定義されています。

API ゲートウェイは上記の手順を完了すると、サービスの応答をクライアントに返します。ただし、ゲートウェイの構成方法やその他の機能の実装方法に応じて、ここで説明する手順が異なる場合があることに注意してください。

APIゲートウェイの機能

上記の主要機能に加えて、API Gateway は多くの機能を提供します。

  • 高度なトラフィック ルーティング: API Gateway は、サービス間で API トラフィックがどのように分散されるかを管理および制御できます。負荷分散とトラフィック分割を実行し、リバース プロキシおよびフォワード プロキシとして機能します。 API Gateway では、ブルーグリーン デプロイメントなどのプログレッシブ配信も可能になります。
  • レート制限: API Gateway は、IP アドレスまたは HTTP ヘッダーに基づいてリクエストを制限できます。これにより、サービスが要求の過負荷を回避し、サービス拒否 (DoS) などの悪意のある攻撃を防ぐことができます。レート制限は、API プロバイダーがさまざまな収益化戦略 (階層型価格設定モデルなど) を実装するのにも役立ちます。
  • エラー処理: API Gateway は、内部サーバー エラー、認証の失敗、無効な入力などによる API リクエストの失敗に対するエラー応答を処理および標準化できます。ゲートウェイを使用するクライアントの HTTP ステータス コードとエラー メッセージをカスタマイズして、クライアントが適切に理解して処理/デバッグできるようにすることができます。
  • サーキット ブレーカー: API Gateway はサーキット ブレーカー パターンを実装して、リクエストの失敗によるバックエンド サービスの過負荷を回避できます。サーキットブレーカー モードでは、障害が発生したサービスへのリクエストの転送が停止され、適切なエラー コードが返されます。これにより、エラーが正常な上流サービスに連鎖するのを防ぎ、API インフラストラクチャの耐障害性が向上します。
  • 可観測性: API Gateway は、運用上の可観測性のためにログ記録、監視、分析を提供します。 API インフラストラクチャのパフォーマンス (API の使用状況) と動作を理解するのに役立ち、可視性とセキュリティが向上し、ダウンタイムが短縮されます。
  • キャッシュ: API Gateway は、クライアント要求に対する以前の応答をキャッシュして提供できます。 API キャッシュが有効になっている場合、ゲートウェイはリクエストをキャッシュされた応答と照合し、存在する場合はリクエストを転送します。これにより、毎回バックエンド サービスに新しい同一のリクエストを送信する必要がなくなります。これにより、サービス負荷と応答遅延が大幅に削減され、API パフォーマンスとユーザー エクスペリエンスが向上します。
  • SSL 終了: API Gateway は SSL 終了を実行できます。これには、バックエンド サービスに代わってクライアントからの受信 SSL 接続の暗号化解除が含まれます。 SSL 終了や authN/Z などのその他のセキュリティ機能をオフロードすることで、サービスは主な責任に集中できるようになります。

API Gateway が提供するこれらすべての機能は、分散サービス システムの管理に大きなメリットをもたらします。

APIゲートウェイの利点

API ゲートウェイの実装により、組織は次のようなメリットなどを得ることができます。

アプリケーションセキュリティの向上

ゲートウェイは API 管理の集中ポイントとして、サービスと基盤となるインフラストラクチャを一般公開から隠します。これにより、攻撃者が、特にサービスを大量のリクエストで圧倒することによって (DoS 攻撃)、アプリケーションをシャットダウンしようとすることが困難になります。ゲートウェイはバックエンドに到達する前にすべてのリクエストを処理するため、このような攻撃に対してレート制限を適用できます。リクエスト検証、authN/Z、サーキットブレーキング、ポリシー適用などのその他のセキュリティ機能は、ログ記録と監視と組み合わせることで、API ゲートウェイがアプリケーションの全体的なセキュリティに貢献します。

マイクロサービスの処理とスケーリングの柔軟性の向上

API ゲートウェイは、外部クライアントを内部マイクロサービスから分離します。これにより、DevOps およびインフラストラクチャ エンジニアは、クライアント アプリケーションの構成を更新することなく、バックエンド サービスに変更を加えることができる高い柔軟性が得られます。クライアントは、バックエンドの変更を意識することなく、ゲートウェイを介してリクエストを送信し、応答を受け取ることができます。 authN/Z や負荷分散などの多くの重要な機能は、ゲートウェイによって処理されます。これらの責任をゲートウェイにオフロードすると、開発者がアプリケーション用に記述するコードが減り、イノベーションが促進され、迅速なリリースが可能になります。

APIプロバイダーの収益化の向上

API 収益化とは、サードパーティの消費者向けに API を製品化することです。 API ゲートウェイは、企業に API を収益化して収益を生み出したり、API を維持するための運用コストをカバーしたりするためのより優れた方法を提供します。ゲートウェイはクライアント要求を課金システムに接続し、API プロバイダーに集中型の課金および計測メカニズムを提供します。これにより、企業は API の使用状況を追跡し、従量課金制、階層型、ユニットベースなど、API コンシューマー向けにさまざまな価格モデルを実装してサービスに課金できるようになります。

ユーザーエクスペリエンス(UX)の向上

API ゲートウェイは、基盤となるサービスにリクエストを送信して集約することで、クライアントが過剰なリクエストを送信するのを軽減します。つまり、ゲートウェイへの単一のリクエストでクライアント アプリケーションのニーズを満たすことができ、レイテンシが大幅に削減されます。また、リクエストが頻繁に繰り返される場合、ゲートウェイはリクエストをバックエンドに転送せずに、キャッシュされた応答をタイムリーに提供できます。さらに、監視機能とログ機能を備えた API Gateway を使用すると、パフォーマンスの問題の追跡とトラブルシューティングが容易になり、アプリケーションのダウンタイムを最小限に抑えることができます。これらすべてが、アプリケーションのパフォーマンス、信頼性、およびユーザー エクスペリエンスの向上に役立ちます。

3つのオープンソースAPIゲートウェイツール

API ゲートウェイ ツールを評価する場合、組織はオープン ソース ツール、クラウド サービス プロバイダー、またはエンタープライズ バージョンを探すことができます。オープンソースが最優先事項である場合は、使いやすさ、柔軟性、拡張性などの要素に基づいて、上位 3 つのオープンソース API ゲートウェイ ツールのリストをまとめました。

1. Tyk APIゲートウェイ

Tyk は、REST、GraphQL、gRPC などの複数のプロトコルをサポートする完全にオープン ソースのゲートウェイを提供します。 Redis 以外のサードパーティ依存関係はなく、現在利用可能なゲートウェイの中で最も高速なものの 1 つです。

Tyk API Gateway の機能の一部を以下に示します。

  • 任意のプロトコル(REST、SOAP、GraphQL、gRPC、TCP)を使用できます。
  • OIDC、JWT、クライアント証明書などを使用した AuthN/Z。
  • 任意の言語 (Python、JS、Go) で拡張可能なプラグインを作成します。
  • Kubernetes ネイティブ宣言型 API 用の Tyk 演算子。
  • CORS を有効にしてブラウザベースのリクエストを許可します。
  • API のバージョン管理とライフサイクル管理。
  • 分析ログによる詳細な API 使用状況データ。

2. Kong API ゲートウェイ

Kong API Gateway は、マルチクラウドおよびハイブリッド クラウドの展開のためのクラウド ネイティブ ゲートウェイです。ゲートウェイは、独自の Kubernetes イングレス コントローラーの助けを借りて、Kubernetes ネイティブでもあります。 Kong は、モジュールとプラグインによる柔軟性と拡張性で知られています。

Kong API Gateway のオープン ソース機能には次のようなものがあります。

  • API の設計と実行のための GitOps プロセスを推進するエンドツーエンドの自動化。
  • K8s に API をデプロイするための Kubernetes Ingress コントローラー。
  • 基本的なレート制限や軽量キャッシュなどの基本的なトラフィック制御プラグイン。
  • シンプルなデータ変換
  • gRPC からバックエンド gRPC サービスへの変換。
  • AuthN/Z (HMAC、JWT キー認証、制限付き 0Auth 2.0 および LDAP、ボット検出、ACL)
  • シンプルなログ記録 (ファイル ログ記録、HTTP ログ記録、基本的な StatsD、TCP/UDP ログ記録)

3. KrakenD API ゲートウェイ

KrakenD は、真の線形スケーラビリティを提供するサーバーレス アーキテクチャで構築された高性能 API ゲートウェイです。単一障害点なしでスケーリングするのに役立ちます。 KrakenD はオンプレミス、ハイブリッド、またはクラウド上で実行され、プラグインと埋め込みスクリプトを使用して拡張可能です。

KrakenD のオープン ソース バージョンは、次の機能を提供します。

  • KrakenD 構成を生成するには、KrakenD Designer と呼ばれるビジュアル ツールが使用されます。
  • マルチフォーマット構成 (JSON、YAML、TOML、HCL など)
  • カスタム Go プラグインを構築し、すぐに使用できるイメージに埋め込みます。
  • データ変換、CDN の HTTP キャッシュ ヘッダー、自動出力エンコーディング。
  • クリックジャッキング、スニッフィング、クロスサイトスクリプティングを防ぐゼロトラストパラメータ転送。
  • JWT クレームベースのルーティングとトラフィックミラーリング/ミラーリング。
  • ログ記録、トレース、メトリクス (Jaeger、Zipkin、ELK スタック ダッシュボード、Prometheus など)

API ゲートウェイは万能薬でしょうか?

いいえ、違います。他のツールと同様に、API ゲートウェイにも独自の課題が伴います。いくつか例を挙げます:

  • トラフィック処理はエッジに制限されます。
  • 南北の交通を処理できません。
  • 社内コミュニケーションの可視性の欠如。
  • クラスター内のネットワークを制御できません。
  • 安全でない東西トラフィック。
  • プログレッシブ配信(カナリアなど)はできません。

API ゲートウェイのこれらの課題を詳しく調べ、Istio のようなサービス メッシュ プラットフォームを検討することが理想的な理由を理解します: Istio サービス メッシュを使用した API ゲートウェイ。

さらに、既存の API ゲートウェイ インフラストラクチャを使用して Istio を実装するさまざまなシナリオがあります。

<<:  量子コンピューティングの現状:現在の状況と今後の方向性

>>:  テンセントクラウドはデジタル化を推進し、中小企業の高品質な開発を支援します

推薦する

今後、アリババクラウドはTongyi Qianwenをオープンし、各企業に独自のビッグモデルを作成します。

4月7日、アリババクラウドは「アリ版GPT」通益千聞の招待入場を発表し、大きな注目を集めた。 4月1...

医療ウェブサイトの最適化に関する考察

医療業界の高い収益率と高い利益により、ますます多くの病院が電子商取引を狙うようになりました。医療業界...

Krypt Ion Cloud: シンガポール データ センターの CN2 ネットワーク クラウド サーバーの簡単なレビュー

米国のロサンゼルスとサンノゼのデータセンターに加えて、イオンクラウドのクラウドサーバーには、実は国内...

クラウド移行の3つの間違いを避ける方法

今日、ほとんどのエンタープライズ IT 組織にとって、ワークロードをパブリック クラウドに移行するこ...

Bilibiliではライブ配信しながら商品を販売するという流れがある!

4月18日、「ビリビリの生放送部門が従業員を解雇する可能性」が話題となった。これに対しビリビリは「ラ...

Kafka はなぜこんなに速いのでしょうか?

システム設計では、メッセージ ミドルウェアは、サービスを非同期にしたり、システムを分離したり、トラフ...

テンプレートベースのウェブサイトは本当にカスタムメイドのウェブサイトよりも劣っているのでしょうか?インターネット企業に騙されないでください!

月収10万元の起業の夢を実現するミニプログラム起業支援プランテンプレートベースのウェブサイト構築と比...

digital-vm シンガポール VPS はいかがでしょうか? 10Gbps帯域幅のシンガポールVPSのレビュー:中国聯通と中国移動は飛べる

digital-vm は、デフォルトで 10Gbps の高帯域幅にアクセスできる VPS サービスを...

maple-hosting: オランダの苦情防止サーバー、$249、E3-1270v3/32g メモリ/240gSSD+2*4tSSD/1Gbps 帯域幅 (トラフィック無制限)

Maple-hostingは主にオランダのサーバーを提供しています。その最大の特徴は、著作権を無視し...

Sangfor のクラウド IT を解読: ミニマリズム、安定性、高パフォーマンス

[51CTO.com からのオリジナル記事] Sangfor といえば、情報セキュリティ分野のスター...

クラウド コンピューティングの時代において、ハードウェアが依然として重要な理由は何でしょうか?

カリフォルニア大学サンディエゴ校は、「クラウドファースト」戦略を採用し、3 台​​のメインフレームを...

ウェブサイトが閉鎖され、コンテンツが失われ、ランキングが下がってしまったらどうすればいいでしょうか?

数日前、当社はサーバーを提供していたパートナーと小さな衝突を起こしました。スペースプロバイダーは実際...

クラウドデスクトップの技術アーキテクチャの分析

著者: Chi Wei、所属: 中国移動スマートホームオペレーションセンターセキュリティ製品部ラボガ...

純粋なプライベート クラウドおよびコンテナー ベンダーにとって、まだ解決策はあるのでしょうか?破産だけかもしれない

最近、別のメーカーがプライベートクラウド製品を放棄したという噂があります。振り返ってみると、Open...