|
Cloud Days 2月28日(火) エムオーテックス 2月28日(火) 米国セールスフォース・ドットコム 2月29日(水) シマンテック ドット クラウド |
第7回 システムを実装する「サーバー」についての基礎知識
Web+DBシステムの設計や仕様が決定したら,実装という段階に進みます。ここまでが机上作業であったのに対して,実際にプログラムとしての構築やテストが始まるわけです。実装を進めるためには「サーバー」が必要です。今回はWeb+DBシステムを設置するサーバー環境についての基礎知識と,サーバー選択のポイントについてです。
サーバーってどういう機械?設計や仕様決定がなされると,案件は「実装」というステップに入ります。ここまで机の上の理論でできてきたシステムを,実際に“動くもの”に作り上げていく作業です。プログラマが仕様書に基づいてコーディングといわれるプログラム作成作業に入ります。実装作業はサーバー上で行われます。サーバーと言われても,具体的にどういう機械なのかというイメージは漠然としているかと思います。ハードウエアとしてのサーバーから見てみます。実はサーバーも構造で言うと普通のPC(パソコン)と大差はありません。CPUがあってメモリーがあってハードディスクがあってというコンピュータです。 ただし一般的なPCと比較したときに,24時間365日稼働しなくてはならないという役割を担うので,全体的に堅牢性の高いパーツを使用しています。サーバーの故障はすなわちシステムの停止であり,これは業務の停止を意味します。しょせんは機械ですから故障は避けられません。だからこそ,できるかぎり故障しないことを主眼に組み立てられているコンピュータといえます。 運用の頻度や負荷によっては,一般向けPCをサーバーとして利用することもできます。しかし,Web+DBシステムでは,データベースで扱うデータが業務上のクリティカル・データである可能性があり,一般向けPCの使用はお勧めできません。 サーバーは常時稼働が条件となりますが,故障や障害の対策として次のような付加装置や仕組みが付属します。
・バックアップ・システム
・無停電装置
・冗長化 このほかに,サーバーはWebを介したサービスを提供することになりますのでインターネット接続環境が必要です。ネットワーク環境についてはセキュリティともかかわってきますので,別に機会を設けてセキュリティ解説のときにもう少しつっこんだお話を書いてみたいと思います。
OSとソフトウエアハードウエアとしてはPCと構造的な差が少ないサーバーですが,このハードウエアに導入されるソフトウエア群はサーバー独特の構成になります。代表的な構成が「LAMP」です。LAMPというのはWeb+DBシステムを構築する際の基本ソフトウエア群の頭文字を並べた略語です。それぞれのアルファベットは次のものをさします。
L:Linux=OS
図1●LAMPの概念。OS(Linux)の上でApacheがユーザーに応答し,必要に応じてMySQLからデータを取り出すためにPHPプログラムを使用する 一般的なPCとの大きな差は,まずOSがWindowsではなくLinuxであるということです。Windowsにもサーバー用OSとしてWindows Server(最新版はWindows Server 2003)というバージョンが存在しますが,一般的なWeb+DB案件でWindowsをOSとしたサーバーが使用されることは非常に稀です。 LinuxとWindowsの優劣についてはここで語るべきこととも思えませんので省略しますが,大多数のWeb+DBシステムがLinuxベースで稼働しているということは,そこに見えざる何かがあるんだと考えていただいていいでしょう。なおサーバーのOSが何であるのかについては,Web+DBシステムを外部からブラウザで見る限り差としては現れません。 OSはLinuxと一言でいいますが,Windowsと違ってLinuxには多数のパッケージが存在します。狭義にLinuxと言う場合は,OSのコアになる部分だけを指します。付帯するソフトウエア群をまとめてパッケージとして配布する場合「ディストリビューション」と呼ばれます。有名なディストリビューションとして「RedHat Lunux」(RHL)や「SUSE Linux」などがあります。OSとしてのLinuxそのものはフリーですが,ディストリビューション・パッケージは製品として販売--つまり有料--されているものもあり,販売品の場合はサポートも受けられます。 このLinuxというOSの上で残りの“A”“M”“P”を動作させます。 ApacheはWebサービス(あるいはWebサーバー,HTTPサーバーともいう)と呼ばれる部分を担当します。外部からのURLリクエストに対して返答するシステムです。ブラウザでどこかのサイトに接続して,何らかのページが表示されるというのはWebサービスによって実現しています。ApacheはWebサービスの中でもシェア世界一位で,事実上別の選択肢はありません。 MySQLはデータベース・サービスを提供します。ここまでの回で説明してきたようなデータの蓄積を行います。データベース・ソフトとしては他にPostgreSQL,Firebird,Oracleなどがあります。MySQLは次に説明するPHPという言語との相性がよく,またデータベースとして動作が高速であるということもあって,Web+DBシステムでは広く利用されています。検索サイトの定番であるGoogleのシステムもMySQLです。この一点からでもMySQLには十分な実績があるといえます。 最後に“P”です。PHPあるいはPerl,もう少し拡大解釈してPythonを含む場合があります。これらのソフトは開発言語です。Apacheの上で動作するプログラムの作成に使用され,MySQLやPostgreSQLといったデータベースとの連携が容易であることから,Web+DBシステムの開発環境の定番になっています。現在のトレンドはPHPです。 ApacheとMySQLは単独で動作しているだけでは全く連携が取れません。Apacheで外部からの要求に応え,要求されたデータをMySQLから取り出したり,MySQLに新データとして蓄積するのがプログラムの役割です。そのプログラムを組み立てて,実行させているのがPHPという言語環境であるというわけです。 プログラマにはそれぞれ得意の言語や環境というのがあります。言語を強く指定するとプログラマを選ぶことになります。特に強い理由がない場合は,どの言語を使用してシステムを作るのかはプログラマ任せにしたほうがいいでしょう。「言語によってページの外見をこういう風にすることはできない」ということはなく,あくまでも内部処理の違いだけが発生します。 LAMP環境は基本的にオープンソースで,導入に当たって購入費用は発生しません。ただしRHLやSUSEのようにディストリビューション・パッケージとして販売されているものを購入する場合には費用が発生します。完全に無償でサーバーを構成することもできますが,無償のディストリビューションを使用した場合には誰も保証やサポートをしてくれない点には注意してください。 ハードウエアにLAMP環境を搭載して,これでやっと「サーバー」と呼べる機械になります。一般的なWindows PCは,サービスを受ける側(クライアント)であって提供する側(サーバー)ではありません。そのためApacheやMySQLといったサービスが導入されていないわけです。一方,サーバーは提供専門に構成されています。同じようなコンピュータですが,構成によって役割が変わっているというわけですね。 「Webサーバー」「データベース・サーバー」という単語をよく耳にしますが,LAMP環境では「Webサーバー=データベース・サーバー」です。基本的なシステム構成では,それぞれが独立した別のサーバー・マシンを使っているわけではなく,1台のサーバーの中にWebサーバー(Apache)としての機能と,データベース・サーバー(MySQL)としての機能を一緒に詰め込んでいます。 データベースがあまりに巨大になる場合や,外部からのアクセスが一日に数十万〜数百万件に達するようであればサーバーを分けて負荷分散を考えなくてはなりませんが,通常は「Webサーバー=データベース・サーバー」の環境でも動作が重くて使い物にならないということはありません。後述するようにサーバーは数百万円規模の機械ですから,簡単に2〜3台購入してからシステムを作るというわけにはいきません。とりあえず1台でも動くので安心してください。
サーバーの設置についてサーバーがどういうものかについてはなんとなくわかってきました。システムを作るということは,どこかにサーバーを設置しなくてはならないということです。設置について少し考えてみます。
連載新着連載目次へ >>
|