「アプリケーション サーバとWebサーバ」という対比が意味するところとは異なり、インターネットでは通常、この2種類のサーバは、Webサイトからのコンテンツに対するユーザーのリクエストを満たすという共通の目的のために一緒に導入されます。Webサーバとアプリケーション サーバの特性を定義した標準文書はありませんが、この用語が一般にどのように理解されているかを見てみましょう。
Webサーバの基本的な役割は、Webサイトからの静的コンテンツ(HTMLページ、ファイル、画像、動画など)に対するクライアントからのリクエストを受け入れて実行することです。ほとんどの場合、クライアントはブラウザまたはモバイル アプリケーションであり、リクエストはWebサーバの応答と同様に、Hypertext Transfer Protocol(HTTP)メッセージの形式をとります。
アプリケーション サーバの基本的な役割は、動的コンテンツを生成する、一般的にビジネス ロジックと呼ばれるものへのアクセスをクライアントに提供することです。つまり、ビジネス、サービス、またはアプリケーションによって提供される特殊な機能を提供するためにデータを変換するコードです。アプリケーション サーバのクライアントは、アプリケーションそのものであることが多く、Webサーバや他のアプリケーション サーバが含まれる場合もあります。アプリケーション サーバとそのクライアント間の通信はHTTPメッセージの形式をとる可能性がありますが、これはWebサーバとそのクライアント間の通信のように必須ではありません。CGIの亜種など、他の多くのプロトコルが普及しています。
一般的な導入では、静的コンテンツと動的に生成されるコンテンツの両方を提供するWebサイトでは、静的コンテンツ用にWebサーバを実行し、コンテンツを動的に生成するためにアプリケーション サーバを実行します。リバース プロキシとロード バランサは、1つ以上のWebサーバと1つ以上のWebアプリケーション サーバの前に配置され、まずはリクエストされたコンテンツの種類に基づいて、次に設定されたロード バランシング アルゴリズムに基づいてトラフィックを適切なサーバにルーティングします。ほとんどのロード バランサ プログラムはリバース プロキシ サーバでもあり、Webアプリケーション サーバ アーキテクチャを簡素化します。
アプリケーション サーバか、Webサーバかが問題になるのはなぜでしょうか。それは、Webサイトに対する要求が高まるにつれて、2種類のサーバの設計と使用がますます重複するようになってきたことが大きな原因です。一般的なアプリケーションの多くは、Webサーバとアプリケーション サーバの両方の役割を担っています(Apache HTTP Server、Express、Hapi、Koaなどがそうです)。
もう1つ重複している点は、一部のWebアプリケーション サーバが通信プロトコルとしてHTTPを使用していることです。同様に、一部のWebサーバは、PHPなどの一般的な言語をネイティブにサポートするモジュールや機能が組み込まれていたり、HTTPからのリクエストをアプリケーションで使用されるプロトコル(FastCGIなど)にプロキシして変換したりするため、アプリケーション サーバのように見えるWebサーバもあります。
NGINX PlusとNGINXは、クラス最高レベルのロード バランシング ソリューションであり、Dropbox、Netflix、Zyngaなどの高トラフィックのWebサイトで使用されています。世界中で3億5,000万以上のWebサイトが、NGINX PlusとNGINX Open Sourceを利用してコンテンツを迅速に、確実に、そして安全に提供しています。
NGINX Plusは、FastCGIやSCGIなどの複数のタイプのアプリケーション サーバ用の変換モジュールを備えた、Webサーバやアプリケーション サーバの前に配置すると、非常に効率的なリバース プロキシとロード バランサとなります。NGINX Plusは、Webサービス、高度なロード バランシング、キャッシング、管理と監視、リクエスト ルーティングなど、複数の機能を1つの柔軟でコスト効率の高いソリューションに統合し、静的コンテンツと動的コンテンツを高速かつ信頼性の高い方法で提供し、顧客満足度と収益を高めます。これは、今日の高パフォーマンスのWebサイトに不可欠な、完全なアプリケーション デリバリ プラットフォームです。