僕はプログラマでありたいよ

こんにちはあたらしいじぶん

【読了】大規模サービス技術入門

今更ながら読みました。この本ははてなの夏のインターンで講義した内容を書籍にまとめた本らしい。
第1刷が2010年で、僕が買ったのは2011年の第3刷だった。技術の進歩は早いもので1年たてば枯れた技術になってしまったりするくらいなのだけれども、この本の内容は2013年の今読んでもとても参考になった。インターン向けの内容ってことは学生向けってことなんだろうけど、きっと学生時代の僕にはチンプンカンプンだったとおもうので、はてなのインターンに来る学生さんのレベルの高さが伺えますね。(僕と比べるのは学生さんに失礼だけど。)

中身は、大規模なwebサービスを運用する上で、はてなのサービスを例に挙げて、OS/メモリ/ディスクというところから、各レイヤのサーバのスケールアウト的な話、アルゴリズム/全文検索、DBの話など多岐にわたって、かなり幅広い。
この類の本は往々にして各カテゴリ毎で話が完結して、カテゴリ毎に読み切り的な内容になりがちなんだけど、この本の良いところは、大規模サービスという観点をぶらさずにそれぞれのカテゴリを説明していて、そのカテゴリの基礎的な内容+大規模サービスではどういうことを気にしなければいけないのかってことを教えてくれる。
あと章立ても良くて、前の章の内容を活かしながら次の章の説明をするので、理解が深まりやすいと思う。さすが講義。

個人的には、キャッシュのところと、サーバの冗長化/スケーラビリティあたりがあらためて勉強になった。キャッシュのところは、今までなんとなくキャッシュに載せればいいじゃん的なフワッとした理解(クズ)を実例、ケーススタディを元に、キャッシュに載せるとどれくらいIOが減るのとかを説明してくれるので理解が深まったとおもう。冗長化/スケーラビリティ的な話は、負荷が高くなったり、トラフィックが多くなった時に、単純に横に並べればいいじゃんではなくて、アプリ、DBなどレイヤー毎に対応は違っていたり、サービスの特性によっても対応は変わるよね的な内容などは、あらためてハラオチしたり勉強になったりした。

ちなみにこの本の中でちょいちょい触れられている「サーバ/インフラを支える技術」という本はもう少し深い内容で書かれている(きがする)ので、併せて読みたいところ。

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)