今更ながら… DSASとは何か?
とあるメールで,「DSAS とは何か?」という事を書く機会があったのですが,そういえばこのブログではそういう基本的な事を述べた記事がなかった,ということに気づいたので,こちらにも転載することにしました.
以下,メールに書いた文を,blog 向けに編集したものです.
KLab が提供しているサイト(携帯向けのサイトもあれば,PC向けのサイトもあります),を動かすためのプラットフォームです.
ハードウェアもソフトウェアも,基本的に特殊な物は使っていません.
使っているハードウェアは,端的に言ってしまえばパソコンとハブだけです.
とは言っても,普通の家庭で使われているパソコンやハブよりは良い物を使っています.パソコンはいわゆる PCサーバと呼ばれる物ですし,ハブも家庭で使われている物よりは高機能なものです(インテリジェンススイッチと呼ばれる類の物です).
じゃぁ家庭にあるパソコンやハブで DSAS が作れないのかというと,そんなことはありません.十分作ることはできます.けれども,商用サービスで使うことを考える場合,そういった一般向けの機器ではやっぱり信頼性が低かったり,管理しにくかったりします.なので一般向けの機器よりはもうちょっとグレードの高い物を使っています.
使っているソフトウェアは,大まかに言うと Linux,Apache,Java/Tomcat,PHP,MySQL と言ったところでしょうか.最近は Ruby on Rails も使おうかとしてたりもしています.
これらは全てオープンソースなソフトウェアです.自分ちでサーバを動かしている人たちが使っているのと,同じ物を使っています.
ハードもソフトも特殊な物を使ってないのなら,じゃぁ一体何をもって DSAS と自慢しているの? と思われるかもしれません.
先程のハードウェアの説明のところにも少し出てきましたが,DSAS のテーマは「信頼性」です.
いくら良いハードウェアを使っていても,壊れるときは壊れます.また,いくら高性能なハードウェアを使っていても,沢山の人が一度にサイトにアクセスしてきたら,処理しきれなくなります.
DSAS には商用のサイトものっかっていますので,マシンが壊れたからといって直ぐに止まってしまったり,或いはお客さんが増えてきた時に,恒常的にサイトが"重く"なってしまってはいけません.
そのような事態に陥らないようにするためは,ハードウェアを多重化します.
どういう事かというと,1つのサイトを動かすのに1台のマシンだけ使うのではなく,2台 3台のマシンを使います.そうすれば,1台が壊れても他のマシンがサービスを提供できますし,また1台で捌ききれないアクセスも,マシンを増やせば何とかなります.
また,マシンだけではなくてネットワーク(端的に言うと,ハブとネットワークケーブルとサーバ側のネットワークカード)も多重化しています.
けれども,ただ単純にマシンやネットワークを複数用意しただけでは,上手く動きませんし,また管理も面倒です.
DSAS と呼ばれるプラットフォームの肝は,ここにあります.
つまり,多重化されたネットワークとサーバマシンを,如何にまとめ上げてプラットフォームと成し,そして如何に簡便に管理できるようにするか,というところです.
上で説明した事を実現するには,色々な技術と知識が必要になります.
例えば,複数のサーバマシンを使って1つのサイトを動かすために,DSAS では負荷分散機を使っています.負荷分散機とは,サイトへのアクセスを一旦1台のサーバで受けて,実際にサービスを提供することができる何台かのサーバの中から最適な1台を探し,そのマシンにアクセスを転送するためのものです.
負荷分散機をちゃんと動かすには,TCP/IPの知識が必要になります.(ちなみに,DSAS で使われている負荷分散機は,Linux に組み込まれた LVS というものです.)
また,負荷分散機自体ももちろん多重化しているのですが,そのための技術として VRRP というものを使っています.
ネットワークを多重化するためには,RSTP というものを使っています.(RSTP が何故必要なのかを説明するには,やっぱりネットワークの深い知識が必要になるのです…)
複数のサーバマシンを効率よく管理するには,Linux に対する深い知識が必要になります.この知識は,セキュリティをしっかり確保するためにも必要になります.
とまぁ,細かく上げていくときりがなかったりします(^^;
主に負荷分散に関する話を,2007年の3月にでました WEB+DB PRESS Vol37 の特集2に,DSAS の運用チームで寄稿していますので,ご興味がおありでしたら探してみられてください.
更に,同じ WEB+DB PRESS の Vol38 からは,『[見せます! 匠の技]スケーラブルWebシステム工房』というタイトルで連載も始まっています.
もちろん,この DSAS ブログの過去記事でもいろいろ触れています(blog なので,体系的にまとまってはいませんが).何回かに分けて書いた記事に関しては,http://lab.klab.org/のDSASブログまとめにまとまっていますので,こちらもご利用下さい.
以上の説明や WEB+DB PRESS の記事,Blog のエントリなどで分からない点やもっと詳しく知りたい点,或いは理解するのに必要な知識について等などありましたら,お気軽にコメント下さいませ.内容によってはすぐにというわけにはいかないかもしれませんが,できるだけコメントでの返信や,あるいは新しいエントリの形でお答えしたいと思います.