April 24, 2008

コミュニティ系webシステムのスケーリング

「Twitterにおける素人の前座は終わり?」(TechCrunch Japanese)という記事はTwitterのエンジニアが責任を取って、あるいは取らされて辞めたことを紹介している。人気が出ればアクセスが増えてシステムへの負荷が高まり最悪の場合には、それ以上アクセスできないような状態にもある。Twitterも人気の影で頻繁な障害が発生していたが、それを解消していくべきタスクを担っていた人物のようだ。アクセスが爆発するのはコミュニティ系のサービスならではで、サーバの分け方やデータベースの分け方あるいはプログラムのコードを修正していくことで負荷を下げる工夫を続けていかなければならない。この記事では“スケーリング”という言葉が使われているけど、同じようなことを指していると思われる。経験を積んでいけばしてはいけないことやすべきことが分かっているので、システム開発の初期段階から盛り込んでおける。最初に間違ったことをやっていると後でスケーリングできないことになりかねないからとても重要なことだ。
書き込みのデータベースと読み込み用のデータベースを分ける。ユーザなどでデータベースを分割できるようにしておく。ダイナミックにページを生成するようなことはなるべく避ける。イメージ用のサーバを分ける。などなど。

No comments: