はてな技術発表会日記 - 機能変更、お知らせなどで、はてなのシステム構成の資料などが公開されてる。私もWebアプリに関わってるエンジニアのはしくれなので、ちょっと勉強がてら斜め読みしてみた。興味深いことが書いてあったので、いくつか書き並べてみる。
- サーバー170台くらい。月に5台増加
- ユーザーが多いと、これだけ必要なのね。サーバーといっても特別なマシンでもなく、普通のAT互換機を自作してるようです。
- ソフトウェアは Linux + Apache + MySQL + Perl
- 全部オープンソース。Java(Servlet+JSP)じゃなくて、Perl使ってるんだ。やっぱりPerlの方がテキスト処理に強いからかな。単に最初の開発者がPerl得意だったから、だったりして・・・。
- データベースはレプリケーション(読み取り専用コピー)で負荷分散
- こういうことが出来るのは初めて知った。はてなの場合、書き込みより読み込みの方が圧倒的に多そうだから、読み取り専用コピーを作るのは効果が高そう。
- エンジニア人数8人
- 意外と少ない。これだけで開発も運用もやってるそうな。まぁ、この人数でゼロから1週間ではてなを作り上げたわけでもないし、日々機能を追加していくというXPを取り入れた開発のやり方だから、この人数でも大丈夫なんだろうな。私が勤めてる会社のように、作る機能を決めたら機能が全部完成するまで機能を変えないというウォーターフォールのやり方では、8人じゃ無理だろうな。あと予想だけど、エンジニアが少数精鋭で優秀な人ばかりだからというのもあるかも。なんだかんだ言って、ソフトウェア開発は未だに人の能力に依存するところが多いからなぁ。
- MVCフレームワーク(プログラム構造の統一ルール)でプログラマ間のコード差を吸収
- なるほど、こういうフレームワークの使い方もあるのか。これで他の人が書いたプログラムに手を加えやすくなるわけか。大人数で開発するとか、担当者がしょっちゅう入れ替わるような開発でも、こういう考え方は使えそう。
Perlは詳しくないので、Perlモジュールの細かい説明とかは分からなかったが、サーバーの構成とか開発のやり方とかは勉強になった。