アプリケーションサーバーとWebサーバーの違いとは?

「アプリケーションサーバー対Webサーバー」という表現からは両者が対照的なものに思えますが、インターネットでは通常、Webサイトのコンテンツを求めるユーザーのリクエストに応えるという共通の目的のために、2種類のサーバーを併用します。Webサーバーとアプリケーションサーバーの特性を定義する標準文書はありませんが、これらの用語が一般にどのような意味で使われているかを見ていきましょう。

A Webサーバーの基本的な役割は、Webサイトの静的コンテンツ(HTMLページ、ファイル、画像、動画など)に対するクライアントからのリクエストを受け付け、処理することです。クライアントはほとんどの場合、ブラウザまたはモバイルアプリケーションであり、リクエストはHypertext Transfer Protocol(HTTP)メッセージの形式で送信されます。Webサーバーからのレスポンスも同様です。

アプリケーションサーバーの基本的な役割は、動的コンテンツを生成する、一般に「ビジネスロジック」と呼ばれるものをクライアントが利用できるようにすることです。ビジネスロジックとは、データを変換し、企業、サービス、またはアプリケーションが提供する固有の機能を実現するコードです。アプリケーションサーバーのクライアントは、多くの場合、それ自体がアプリケーションであり、Webサーバーや他のアプリケーションサーバーも含まれます。アプリケーションサーバーとそのクライアント間の通信にはHTTPメッセージが使用される場合もありますが、Webサーバーとそのクライアント間の通信とは異なり、必須ではありません。CGIの各種仕様をはじめ、ほかにも多くのプロトコルが広く使用されています。

アプリケーションサーバーとWebサーバーはどのように連携するのか

一般的な導入環境では、静的コンテンツと動的に生成されるコンテンツの両方を提供するWebサイトで、静的コンテンツにはWebサーバーを使用し、動的なコンテンツ生成にはアプリケーションサーバーを使用します。1台以上のWebサーバーと1台以上のWebアプリケーションサーバーの前段に、リバースプロキシとロードバランサーを配置します。これらは、まず要求されたコンテンツの種類に基づき、次に設定済みの負荷分散アルゴリズムに基づいて、トラフィックを適切なサーバーにルーティングします。ほとんどのロードバランサープログラムはリバースプロキシサーバーとしても機能するため、Webアプリケーションサーバーのアーキテクチャを簡素化できます。

なぜこの疑問が生じるのでしょうか?

あるものがアプリケーションサーバーなのか、それともWebサーバーなのかが問題になるのはなぜでしょうか。主な理由は、Webサイトに求められる要件が増すにつれて、この2種類のサーバーの設計と用途が次第に重なり合うようになったためです。多くの一般的なアプリケーションは、Webサーバーとアプリケーションサーバーの両方の役割を果たします(Apache HTTP Server、Express、Hapi、Koaなど)。

もう1つの共通点は、一部のWebアプリケーションサーバーが通信プロトコルとしてHTTPを使用していることです。同様に、一部のWebサーバーは、PHPなどの一般的な言語をネイティブにサポートする組み込みモジュールや機能を備えていたり、HTTPリクエストをプロキシして、アプリケーションが使用するプロトコル(FastCGIなど)に変換したりするため、アプリケーションサーバーのように見えることがあります。

NGINX Plusはどのように役立つのか

NGINX Plus と NGINX は、Dropbox、Netflix、Zyngaなど、トラフィック量の多いWebサイトで利用されている最高クラスのロードバランシングソリューションです。世界中の 3億5,000万以上のWebサイト が、コンテンツを迅速かつ確実、安全に配信するために、NGINX PlusとNGINX Open Sourceを利用しています。

NGINX Plusは、Webサーバーやアプリケーションサーバーの前段に導入することで、極めて効率的なリバースプロキシおよびロードバランサーとして機能します。また、FastCGIやSCGIなど、複数のアプリケーションサーバー向け変換モジュールを備えています。NGINX Plusは、Web配信、高度な負荷分散、キャッシュ、管理と監視、リクエストルーティングなどの複数の機能を、柔軟でコスト効率に優れた1つのソリューションに統合しています。静的コンテンツと動的コンテンツを高速かつ確実に配信し、顧客満足度と収益の向上に貢献します。今日の高性能Webサイトに不可欠な、包括的なアプリケーションデリバリープラットフォームです。