web-dev-qa-db-ja.com

APIゲートウェイとリバースプロキシ

マイクロサービスアーキテクチャに対処するために、リバースプロキシ(nginxやApache httpdなど)と併用し、クロスカットの懸念事項の実装によく使用されます APIゲートウェイパターンが使用されます 。時々、リバースプロキシがAPIゲートウェイの機能を実行します。
これら2つのアプローチの明確な違いを見るのは良いことです。 APIゲートウェイの使用による潜在的な利点は、複数のマイクロサービスを呼び出して結果を集約することです。 APIゲートウェイの他のすべての 責任 は、リバースプロキシを使用して実装できます。

  • 認証(nginx LUAスクリプトを使用して実行できます);
  • 輸送のセキュリティ。それ自体がリバースプロキシタスクです。
  • 負荷分散
  • ....

これに基づいて、いくつかの質問があります。

  1. APIゲートウェイとリバースプロキシを同時に使用するのは理にかなっています(たとえば、request-> Api gateway-> reverse proxy(nginx)-> concrete mictoservice)?どんな場合に?
  2. APIゲートウェイを使用して実装でき、リバースプロキシでは実装できない他の違いは何ですか?
77
user1459144

それらが相互に排他的でないことに気付いた場合、それらについて考えるのは簡単です。 APIゲートウェイは、特定のタイプのリバースプロキシ実装と考えてください。

ご質問に関しては、APIゲートウェイが、負荷分散とヘルスチェックのためにリバースプロキシの背後にあるアプリケーション層として扱われる場合、両方を組み合わせて使用​​することは珍しくありません。たとえば、Web Application Firewall/API Gatewayがリバースプロキシ層に挟まれているWAFサンドイッチアーキテクチャのようなものです。1つはWAF自体用で、もう1つは通信する個々のマイクロサービス用です。

違いに関しては、非常によく似ています。それは単なる命名法です。基本的なリバースプロキシのセットアップを行い、認証、レート制限、動的な構成の更新、サービスの検出など、さらに多くの要素を追加し始めると、人々はAPIゲートウェイと呼ぶことになります。

60
Justin Talbott

API Gatewayは、APIを介して(場合によってはUIを介して)動的に構成できるリバースプロキシであり、従来のリバースプロキシ(Nginx、HAProxy、Apacheなど)は構成ファイルを介して構成され、構成の変更時に再起動する必要があると思います。したがって、ルーティングルールまたはその他の構成が頻繁に変更される場合は、API Gatewayを使用する必要があります。ご質問へ:

  1. このシーケンスのすべてのコンポーネントが目的を果たす限り、それは理にかなっています。
  2. 違いは機能リストではなく、構成変更の適用方法にあります。

さらに、API Gatewayは、たとえば Apigee または Tyk などのSAASの形式で提供されることがよくあります。

また、Node.jsを使用して簡単なAPI Gatewayを作成する方法に関する私のチュートリアルもあります https://memz.co/api-gateway-microservices-docker-node-js/

それが役に立てば幸い。

22