Webサーバーの役割

WebサーバーはWebブラウザなどのクライアントソフトウェアに対して、HTMLなどで書かれたデータを配信するソフトウェアです。(そのソフトウェアが導入されたサーバー機自体を指すこともあります。)

HTTPリクエストにて指示された、Webサーバー内に存在するHTMLファイルの内容をHTTPレスポンスとして返す。
そして、Webブラウザは返ってきたHTTPレスポンスの内容を表示する。
従来のWebサーバーは基本的に上記した機能だけの実装であり、実にシンプルなものでした。

しかし、インターネットが普及するにつれ下記のような要望が出てきました。

Webページを閲覧するユーザーごとに表示させる内容を変えたい。
インターネットを介した業務処理をユーザーに提供したい。

この要望に応えるためには完成されたWebページをそのまま表示するだけでは実現できません。
ユーザーがアクセスしてきたタイミング、もしくはユーザーが入力した内容によって、Webページを動的に変化させる仕組みがWebサーバーに必要です、

そのための仕組みとして、当初はCGI(Common Geteway Interface)が使用されました。

CGIは、Webブラウザからパラメータとともに送られた要求に対し、Webサーバーがプログラムを呼び出して処理を実行し、パラメータに応じた結果(HTML)を返すという仕組みになります(このように要求に応じて内容が変わるページのことを動的なページと言います)。

CGIを使用した動的なページの作成は比較的容易であったため、かなり普及しました(現在でもCGIにより作成されたWebページはたくさん動いています)。
しかし、その反面、実行の際の負荷が大きく処理が遅い、CGIプログラムの不具合などにより予期せぬ動作をした場合、その影響がWebサーバーに及んでしまうなど、速度やセキュリティの面でのデメリットもあります。

その後、さらに高度な処理を行うプログラムをより安全・高速に動作させる仕組みが求められるようになり、JavaやPHP、.NETなど新しい技術が開発されていきました。

しかし、後から出てきた要望をWebサーバーに取り入れていったことで、従来、シンプルだったものがどんどん複雑になっていきました。
こうなってくるとWebサーバーに機能を追加していくよりも、Webサーバーは従来のシンプルな機能のみを提供し、プログラムを動かすサーバーは別に分けた方が良いという考え方が広まっていきました。

そのような考え方のもと、誕生した後者のサーバーをアプリケーションサーバーと言います。