「Web 開発者のための大規模サービス技術入門」を読んで

株式会社はてなの田中さん(id:stanaka)に共著書の献本を頂きました.

発売が期待されていた本書を一通り読んでみた感想と本書の内容をざっくり紹介したいと思います.

本書は,はてなインターンシップ講義内容を収録した講義ベースの回と,書き下ろしの回とで構成されており,はてなに溜め込まれた大規模Webサービスを構築するにあたって必要になってくる技術に関する情報がまとめられています.

本書のタイトルを見て,大規模なサービスというのはどの大きさからを指しているのかが最初に気になりました.
読んでいて感じたのは,何かコードを書いて1台のサーバやクラウド上のインスタンスを用いて公開し,それに対するアクセス過多に単純なサーバを追加して凌ぐのではなく,賢くアクセスを捌く方法をインフラ的な観点だけでなく,アルゴリズムやデータ処理といったソフトウェアの観点から解決をする策を与えてくれるということでした.
表紙には"1000台"とありますが,単純な1台が横に増えて,更にProxy-App-DBというような基本的な三層構造を持った後にどうスケーラビリティを保って行くか,きっと10台や20台あたりを越えるあたりから知っておくべき技術なのだと思います.

勿論インフラの面も忘れられておらず,ウェブサービスのインフラに関わる人にとってバイブルのような存在であったサーバ/インフラを支える技術の一部がコラムとして紹介されており,サービス開発の花形であるソフトウェアだけに焦点が行かないよう,OSやハードウェア,ネットワークといった開発者の意識が届きにくい部分の捕捉がうまく成されています.

また,特に興味深いのは第1回Lesson3の「サービス開発の現場」の項でした.はてなのサービスの開発の現場で,エンジニア同士のコミュニケーション方法や活用しているツールに関して理由や目的を併せて示してくれています.こういった情報を公開しているのは開発だけでなくチームを動かすことが気になる人にとって凄く嬉しいですね.

加えて気になったのは第11回Lesson30の「クラウドvs.自前インフラ」の項です.
これから,サービスの全てをクラウドに乗せるのかどうかを選択するときが来ると考えると,実際に自作サーバを使っている場所から見える概観は参考になります.

他にもSSDグローバル化,これから取り組もうと思っている人がほとんどであろう技術についても触れられています.

ここまでそれぞれの要素の技術に関してを少し手を動かせばわかるような形で1冊にまとめられているのは,まさに「大規模Webサービス構築概論」のカリキュラムに噛み合った教科書と云えるでしょう.
本書の内容は個人やチームに拘らず,ユーザ数が伸び始めた(伸び始めようとしている)サービスを開発している現場にとっては大変頼りになる高速道路だと思えます.

教科書という書き方をしましたが,この本が実質的に教科書となるであろう.はてなインターンが今年も開催されるそうです.

偉そうに紹介してしまっておりますが,僕も昨年大変お世話になりました.一生の糧です.
12日で締め切りとのことなので,学生のみなさんは是非是非挑戦してみて下さい.