Hatena::ブログ(Diary)

naoyaのはてなダイアリー

July 01, 2010

「Web開発者のための大規模サービス技術入門」という本を書きました

自分が作ったWebサービス、将来大きくなってもシステムは大丈夫なんだろうか? そんな不安を抱きながらWebサービス開発に携わっている方も多いでしょう。あるいは、毎日毎日システムが悲鳴を上げる、どうしたらこの状況を看破できるんだろう? 成長したWebサービスを前に、困っている技術者の方もいるかもしれません。

筆者も、まったく同じ経験をしてきました。

月間1,500万人が訪れる、はてなというサイト。その大規模システムの開発と運用に、筆者らは取り組んでいます。1,000台のホストが、その負荷を捌きます。100万人以上のユーザによってブログやソーシャルブックマークに投稿され続けるデータは日々大きくなっていき、サーバリソースを逼迫させます。ギガバイト、テラバイト単位のデータ量が技術者たちを悩ませます。それでもトラフィックの波は収まることを知りません。

(中略)

どうしたらこの怪物、大規模サービスを抑え込むことができるのか。試行錯誤の連続の末、はてなの技術者である我々が手に入れた技術とノウハウ―すなわち大規模サービス技術の地図とコンパス―が本書にはあります。

Web開発者のための大規模サービス技術入門 ― p.iii 「本書について」より

昨年のインターンシップ開催時に、技術評論社の土井さんに取材に来ていただきました。はてなでは、インターンシップで学生と一緒に仕事をするにあたり、大規模サービス開発の勘所を抑えてもらうために10日程度の教育期間を設けるという、少し変わったやり方を採用しています。その講義への取材でした。

このカリキュラムを、書籍にできないか。そう思ったのは、初めてのインターンシップでその成果を実感したときでした。数日後には目の前にいる学生さんたちと一緒にシステム開発を始めなければいけない。限られた期間で結果を出す必要がある。そのためには、現場感から来る必要な知識とノウハウを凝縮して伝えなければいけない。そのモチベーションからまとまった知識はインターンシップに留まらず、Web技術者全般にとって有益なのではないか。これを整理し公開することで、あわよくば、Web開発技術レベルの底上げに少しは貢献できるのではないか。そんなことを考えていました。

こうして、取材記録を整理し、大規模Webサービス開発という視点で書き下ろし、編集したのが本書です。結果として、負荷分散にまつわるOSの動作原理、DBの分散方法、大規模データを処理するための基礎知識、実践的なアルゴリズムをシステムに組み込む実装、検索エンジンの仕組み、システム全体を見渡すためのインフラ設計の知識・・・多方面の解説を盛り込むことができました。

なんやかんやで、企画から出版までに1年が経ってしまいました。しかしその内容は、1年経っても色あせることなく、十分な読後満足感が得られるものになったのではないかと自負しています。

「Web開発者のための大規模サービス技術入門」7月7日、七夕に発売です。ご一読いただければ幸いです。