『4Gbpsを超えるWebサービス構築術』読了

4Gbpsを超えるWebサービス構築術

4Gbpsを超えるWebサービス構築術


昼休みにご飯食べながら読むという進め方だったせいもあって、かなり時間かかりましたが読み終わりました。


ライブドアが誇る技術が幅広く書かれているとの事でしたが、その内容は。


■Chapter1 Webサービスの概要と要素技術
タイトル通り、Webサービスというものの歴史とその概要についての章。
Webエンジニアとしてはアイスブレイクと捉えられないとちょっとマズいかもしれません。



■Chapter2 キューイング
負荷分散のよくある一つの解決策、キューイングによる後回し。
僕も普段から考えている場所だけあって、凄くすんなり読めました。
逆に言うとGearmanとTheSchwartzの概要説明に終始していたので、もうちょっと
ライブドアなりの工夫みたいなものが知りたいと思ったりしました。


ちょっと話がそれますが、YAPC::Asia2009でも思いましたがやっぱりこの
キューイングはトラフィックが多いサイトではもはや必須対応なのかと。
もともと使っていたsix apartをはじめ、livedoorでも(malaさんセッションより)、
はてなのコーポレートトラックでもTheSchwartzを使っているらしきことが
伺えたので各社でどんな感じなのかなーと改めて興味が沸きました。




■Chapter3 DBキャッシング
来ました、memcached。今の職場ではこれがないなんて想像出来ない。。。
そんな11211ポートに住まう偉大なシステムですが、確かに前の職場で普通のサイトを
運営する分にはむしろどんなもんかすら触る機会すらなかった。
ここでは導入の前提となるWebアプリにおけるDBのボトルネックの部分も
解説されているので、それも合わせて読みたいところ。
そして、書かれていますが便利な上に導入するデメリットがほとんどない
というのがmemcachedのいいところだと思います。


と言いつつ、僕もプロジェクトの関係上ガリガリ使えてる訳ではない、、、
引っかかるところなんかが書かれても良いかと思いましたが、まぁそういうノウハウは
ネット上に溢れているという割り切りで、それはそれでよいと思います。




■Chapter4 HTMLキャッシング
この辺からは個人的に名前と概要は知っているけど、使った事とかはあんまりない
という部分になってきます。
Squidなんかはまさにその典型。confファイルの例まで書かれているんですが、
リアクションが出来ない自分。同時に説明の図の中にある箱の数が飛躍的に増えてきます。




■Chapter5 検索サービスの技術
この本は全体的に章の最初というか導入だったり・前提だったりの説明が明瞭
に感じましたが、この章の「検索」という項目の前提となる検索方式・言語解析の仕組み
の部分に触れていたのが非常にわかりやすかったです。
この章も社内ではそれに特化して研究している人がいたりするので、自分が
あんまり触れてない。。




■Chapter6 入出力パフォーマンス
恥ずかしながら、Blackholeエンジンについて無知でした、、
そんなんを読み進めていくと、この章はタイトルから察する事が出来るように
内容が複合的。前の章の技術なんかも含まれてきます。
特に気になったのが「最終出力に近い部分でのキャッシュ」。理由まで読んでみると
確かに納得ですが、やはり細かい運用という意味ではちょっと聞いてみたいなと
思う部分があったりしました。
あとCache::Memcached::Managedはこれまた知りませんでした。あとで読みます、、




■Chapter7 分散ストレージ
タイトルはストレージとなってますが、物理的な話のみならず運用するモジュール
の部分にも踏み込んでます。
最初がNFSから始まったことに歴史を感じますし、そこから現在まで試行錯誤で
運用されているという事に実績を感じます。




■Chapter8 モバイルの技術
ここは他とはちょっと毛色が変わって、日本のモバイル事情を浅く広く紹介。
またまた弊社の話ですと、モバイルもある程度切り分けがされているので
普段それ程触れられてません。なのでちょっと遠めから眺める視線で読ませて
いただきました。
内容的にはYAPC::Asia2009のkazeburoさんのセッション内容を合わせて
確かめると良いのではないでしょうか。




■Chapter9 ネットワークを取り巻く技術
自分が一番弱いところ、低いレイヤーの話はホントにダメです。
ここは多分何度も読み直した方がいいな、、、
ここら辺は知識として知っておくだけではなく、実際に動かさないと真の理解には
繋がらないんだろうなとつくづく感じます。
1台のサーバーすら運用せず、ネットワークを学ぶのがそもそもの間違いな気がしているので
そろそろroot権限のあるようなレンタルサーバー借りるか、自鯖を立てるか
しなければと思いました。




■Chapter10 Webサービスの性能評価
大規模サービスにおいて必要なのは、新技術の投入。ただそれよりも現状のチューニング。
と感じさせる、これだけは・まずはこれからやるべし、っていう内容。
もしMySQLのEXPLAIN構文を知らない人がいたら絶対読んでおいた方がいいです。



■まとめ
やっぱり自分が何を知っていて、何を知らないかが凄く良くわかりました。
アプリケーションで意識するmemcachedなんかは普段触っているので、
すっと頭に内容が入ってくるし、キューイングの部分なんかは正直物足りませんでした。
逆に後半になってくると、若干くじけそうな程知らない事が多すぎる。。。
所詮自分はイチアプリプログラマーに過ぎないんだなと痛感させられました。


とてつもない巨大サイトでなくていいので、この10分の1のトラフィックのサイトを
こういう技術を使って作ってみたいなと思いました。
今の会社ではなかなかそういう事がしにくいのが難点ですけどね、、


ただ、僕のようにプログラマーな人が「エンジニア」になるのに何が足りないのか
検定試験的に読むのにはオススメな1冊でした。著者の方々、執筆ありがとうございました。