このページの本文へ

前へ 1 2 次へ

WWW完全制覇 第3回

今さら聞けないWebサーバの役割と機能

2009年05月19日 08時00分更新

文● 遠藤哲、中塚寛幸、ネットワークマガジン編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

動的なコンテンツへの対応

 Webのコンテンツは、「静的コンテンツ」と「動的コンテンツ」に大きく分けることができる。静的コンテンツは、上記で紹介したような、事前に作成したファイルをそのままWebブラウザで表示するコンテンツだ。一方の動的コンテンツは、Webブラウザからのリクエストやユーザーの操作などが生じた際に、動的に生成されるコンテンツである。さらに動的コンテンツには、Webブラウザ上で動作するスクリプト(JavaScriptやVBScript)を使う「クライアントサイド」タイプと、サーバ側で動作する外部プログラムやスクリプトによって生成される「サーバサイド」タイプとがある。

 Amazon.co.jpのようなショッピングサイトは、サーバサイドによる動的コンテンツの典型だ。Amazon.co.jpでは、商品を選んで「ショッピングカートに入れる」をクリックすると、カートに入れられた商品が次のページにリストアップされる(画面3)。こうしたサイトでは、商品データベースを検索したり、ユーザーごとのカートの内容を書き換える(データベースを修正する)プログラムを用意し、Webサーバから呼び出す仕組みを構築している。カートに商品を追加する操作を行なうと、カート内容を書き換えるプログラムが実行され、動的コンテンツが生成されるわけだ。

画面3 Amazon.co.jpのショッピングカート。当然だが、ユーザーごとに異なった内容が表示される

 IISは、こうした機能を実現するために「CGI(Common Gateway Interface)」や「ISAPI(Internet Server Application Programming Interface)」といった機能を持っている。CGIはApacheも搭載する機能で、Webサーバから外部プログラムを呼び出す仕組みだ。外部プログラムの種類に規定はなく、Webサーバから命令を受け、実行結果をWebサーバに受け渡す機能を持つプログラムであれば、何でも利用できる。ただし一般的には、「Perl」や「Ruby」などのスクリプト言語が使われることが多い。CGIは自由度の高い仕組みではあるが、外部プログラムの起動時や出力結果の受け取りなどの処理に時間がかかってしまう欠点がある。

 一方のISAPIは、HTML内に記述されたスクリプトをサーバ上で実行する仕組みだ。このISAPIに対応したアプリケーション(ISAPIエクステンション)には、Javaのコードを実行する「JSP(JavaServer Pages)」や「PHP」、「ASP(Active Server Pages)」などがある。

 特にASPは、マイクロソフトがIIS用に開発した仕組みで、JScript(マイクロソフト版のJavaScript)やVBScriptといったスクリプト、C#という言語で開発したプログラムなどをIIS上で実行できる。HTML内に記述するだけでなく、独立したファイルとして用意し、HTMLから呼び出すことも可能だ。ASPには、スクリプトの起動や出力結果の受け取りがCGIより速い、データベースと連携するための機能などが用意されているといった長所がある。

サーバの3層化

 これらのアプリケーションを実現するためのWebサーバと外部プログラム、そしてデータベースを同一のサーバで運用することも可能ではあるが、多くのサイトがこれらを別のサーバに分散している(図1)。サーバを分けることで負荷の分散が可能なほか、万が一Webサーバに侵入されても、ユーザー情報や決済情報が保存されているデータベースサーバへのアクセスを防止できるといったメリットがある。また、Webサーバとアプリケーションサーバ、データベースサーバをそれぞれ複数用意する「冗長化」もよく使われる手法だ。

図1 サーバ機能を3台に分けた3層モデル

前へ 1 2 次へ

カテゴリートップへ

この連載の記事