リバースプロキシサーバとロードバランサーは、クライアント/サーバ コンピューティングアーキテクチャの構成要素です。どちらも、クライアントとサーバ間の通信を仲介し、効率を高める機能を果たします。専用デバイスとしての実装も可能ですが、現代のWebアーキテクチャでは、汎用ハードウェア上で動作するソフトウェアアプリケーションとして実装されることが多くなっています。
基本的な定義は、以下のように単純です。
上記の定義だけでは、似通っていると思われるのではないでしょうか。どちらのタイプのアプリケーションも、クライアントとサーバの間に配置され、クライアントからのリクエストを受け入れ、サーバからのレスポンスを提供します。したがって、リバースプロキシとロードバランサーの違いについて混乱するのも無理はありません。明確に区別するために、どのような場合に、どのような理由で、それぞれがWebサイトにデプロイされるのかを見ていきましょう。
一般的に、サイトが1台のサーバでは大量のリクエストを効率的に処理しきれず、複数のサーバを必要とする場合に、ロードバランサーがデプロイされます。複数のサーバをデプロイすることで、単一障害点もなくなり、Webサイトの信頼性が向上します。通常、サーバはすべて同じコンテンツをホストします。ロードバランサーの役割は、各サーバの能力を最大限に活用し、どのサーバにも過剰な負荷がかからぬよう、作業負荷を分散し、クライアントに可能な限り迅速にレスポンスを提供することです。
クライアントに提示されるエラーレスポンスが減るため、ロードバランサーによってユーザエクスペリエンスも向上します。サーバの停止を検知すると、そのサーバからグループ内の他のサーバにリクエストを迂回させます。最も単純な実装では、ロードバランサーは通常のリクエストに対するエラーレスポンスを傍受することで、サーバの健全性を検知します。アプリケーションのヘルスチェックは、より柔軟で洗練された手法です。この場合、ロードバランサーは個別のヘルスチェックリクエストを送信し、特定のタイプのレスポンスを要求することで、サーバの健全性を評価します。
一部のロードバランサーは、セッションパーシステンスも提供します。これは、特定のクライアントからのすべてのリクエストを同じサーバに送るという便利な機能です。HTTPは、理論的にはステートレスです。しかし、多くのアプリケーションでは、コア機能を提供するためにステート情報を保存する必要があります。Eコマースサイトの買い物かごは、その一例です。このようなアプリケーションは、ロードバランシングされた環境では、ロードバランサーがユーザセッション内のリクエストを、最初のリクエストに応答したサーバにすべて誘導するのではなく、異なるサーバに分配するため、パフォーマンスが低下したり、場合によっては失敗が起こったりします。
ロードバランサーのデプロイは、複数のサーバがある場合のみ意味がありますが、リバースプロキシのデプロイは、多くの場合、Webサーバやアプリケーションサーバが1台であっても理にかなっています。リバースプロキシはWebサイトの「表の顔」のようなものであり、Webサイトの宣伝のためにアドレスが使用され、サイトのネットワークの端に配置されます。これにより、Webサイトでホストされているコンテンツに対するリクエストを、Webブラウザやモバイルアプリから受信します。そのメリットは、以下の2つです。
リバースプロキシをデプロイするもう1つの理由は、Webアクセラレーションです。つまり、レスポンスを生成してクライアントに返すまでの時間を短縮できます。Webアクセラレーションには、以下のような手法があります。
NGINX PlusとNGINXは、クラス最高のロードバランシングソリューションであり、Dropbox、Netflix、Zyngaなどの高トラフィックのWebサイトで使用されています。世界中で4.5億以上のWebサイトがNGINX PlusとNGINX Open Sourceを利用しており、迅速かつ確実で安全なコンテンツのデリバリーを実現しています。
NGINX Plusは、上記すべての機能をはじめとする多くのロードバランシング/リバースプロキシ機能を提供し、Webサイトのパフォーマンス、信頼性、セキュリティ、拡張性を向上させます。ソフトウェアベースのロードバランサーであるNGINX Plusは、同様の機能を持つハードウェアベースのソリューションに比べて、はるかに低いコストで利用できます。NGINX Plusの包括的なロードバランシング/リバースプロキシ機能により、高度に最適化されたアプリケーションデリバリーネットワークを構築できます。
ここでご紹介した機能に関するNGINX Plusでの実装については、当社ブログ「NGINXとは? NGINXとNGINX Plusを徹底解説します」をご覧ください。