サーバの中ってどうなっているの?


前回、サーバサイドというのがどういうものか簡単に説明をしましたが、では実際にサーバの中でどのような具合にプログラムが動いているんでしょう。そもそも、ごく普通のパソコンユーザが「サーバ」なんて特別なコンピュータを見る機会なんてない!と思いますよね。
サーバマシンの多くは特別なコンピュータではなく、実は普通のパソコンにメモリやハードディスクを増強しサーバプログラムを搭載したものだったりする。

が、これはちょっと違います。サーバという名前の特別なコンピュータなど、実はないのです。現在のサーバというのは、サーバとして使えるようにハード・ソフトともにいろいろと調整したり強化したパソコンだったりします。使われているOSもWindowsやLinux、Mac OS Xといった一般的なOSのサーバ用バージョン。これも、通常のOSと全く違うというわけではありません。というより、普通のパソコン、普通のOSでサーバとして運用しているところだって実はけっこうあるのですよ。

要するに、サーバマシンというのは「サーバとしての機能(ソフトウェア)が用意されているコンピュータ」ということ。「何かとてつもなくすごいコンピュータに違いない」と思っていた人、残念でした。(もちろん、普通のパソコンよりはるかに高性能なサーバもあります。「特別な機械でなくてもサーバとして使えるんだ」ということです)

サーバマシンでは、それぞれの役割に応じた「サーバプログラム」が動いています。例えば、Webサーバとして使うならばWebサーバのプログラムが常時動いているのですね。これは常に1つのサーバプログラムしか動いていないわけではなくて、Webサーバ、データベースサーバ、FTPサーバなどが1つのコンピュータ内で同時に動いているような場合もあります。

サーバプログラムは、常時ネットワークの入り口を監視し、送られてきたデータを受け取って、それに応じてさまざまな処理をします。例えばWebサーバの場合を考えてみましょう。WebブラウザからそのWebサーバにアクセスをすると、Webブラウザから「××というURLのファイルを送ってください」という要求が送信されてきます。Webサーバはそれを受け取ると、指定されたファイルをサーバの中から探し出し、それを送り返します。基本的には、そうやってブラウザ側との間で「これをください」「では送りましょう」というやりとりをひたすら繰り返しているのですね。

ということは、サーバサイド・プログラミングというのは? そう、両者の間に入ったり、あるいはWebサーバの代わりとして必要なデータを作成し、ブラウザ側に送り返す働きをしているわけです。「これください」といわれたら、それに応じて必要なデータを集めたり計算したりして送信するためのデータを構築し、完成したところで「できました、どうぞ」と送り返す。それがサーバサイドのプログラムの働きです。

普通のWebサーバの場合、単純にHTMLのファイルやそこに組み込まれたイメージファイルなどのファイル類を転送するだけです。これに対し、サーバサイド・プログラミングは、サーバの中でプログラムが動き処理をしたものが送られます。仕組みが全く違いますから、それを動かすためのサーバも違います。Webサーバにそのための機能を追加したり、あるいはまったく別のサーバプログラムを動かすなどして、こうしたサーバサイドのプログラムは動いています。