コンテキスト
アプリケーションサーバーを使用するWebアプリケーション、つまりRuby on Rails with puma。Running with a container within AWS ECS with Fargate。Traffic is routed by AWS Application Load Balancerコンテナ内で実行されているアプリケーションサーバーに。
質問
ALBとアプリケーション自体の間、つまりサイドカーコンテナーとしてリバースプロキシは引き続き必要ですか?メリットは何でしょうか?
リバースプロキシは必須ではありませんが、Railsが同梱されているWebサーバーには最小限の機能しかありません。そのため、一般に公開されている可能性があり、大きくなる可能性があるアプリケーションでは、リバースを統合することをお勧めします。プロキシ(例:Nginx)。
たとえば、これにより、高度なレート制限機能、キャッシング、および他のWebサーバー実装よりもはるかに少ない手間でSSL終了をエンドツーエンドで実行できるようになります。ロギングも非常に簡単になり、TCP=再試行のようなものは、アプリケーションに負荷がかかっている場合の救命となります。
サイドカーは必要ありません。アプリケーションと同じボックスにNginxをインストールできます。その非常に効率的で、アプリケーションのパフォーマンスに影響を与えません。
Railsの前で複数のNginxプロキシを使用し、1日あたり数十億のHTTPリクエストを処理します。
Cloudflareなどの大規模なリバースプロキシ実装もNginx上に構築されています。
ロードバランサーは一種のリバースプロキシです。特定のポートでトラフィックを受け入れる、一種のファイアウォールとして機能するなどの利点があり、サーバーに到達するある種の攻撃を防ぎます。
Webアプリの一般的なケースでは、ロードバランサーと2番目のリバースプロキシの両方を使用することの大きなメリットはありません。