Googleを支える技術 - 巨大システムの内側の世界

Googleを支える技術 - 巨大システムの内側の世界」を読了した。
もう本書がでてから3年近く経っているので、いまはどれくらい進化しているんだろう。

Googleのシステムに関する基礎知識

以前からGoogleのシステムには興味があったので、セミナーなどでGoogleのセッションがあれば聴いていたので基本的な知識はあった。BigtableとかGFSとかChubbyとかMapReduceとか、でもそれはすごく断片的で、まとまった知識ではなかった。
# Bigtableの論文は読んでみたのだが挫折してしまった。
本書ではそれらの情報がひとつにまとまっているし、これまで知らなかったこともたくさん書いてあった。
そして読んでて楽しかった。Googleってこんなことまでするのかって思って。

要素技術

目次とは異なるが、本書は以下の要素で章が分かれている。

  • 検索エンジン
  • 大規模化
  • 分散ストレージ
  • 分散データ処理
  • 運用コスト
  • 開発体制

最初は順調に読み進めていたが、僕は分散ストレージあたりで難しく感じる部分が多くなってきた。さらに読み進めて運用コストの部分では、CPUやCMOSの仕組みと電気消費量の関係あたりが難しかった。
ただし、ちょっと難しい部分では必ずといっていいほど図が入っているので、文章と付きあわせてしばらく考えるとある程度理解できた。たぶん。

コスト

いちばん面白く感じたのは「第5章 Googleの運用コスト」だった。この部分がいちばん知らなかったところだからだと思う。
Googleのデータセンターの写真をみると、これでもかってくらいにサーバが詰まっている。
以下の記事から写真などを見ることができる。

普通、こんなにサーバを詰めることはできない。ラックには電力容量が決まっているので、それを超えるサーバを置くことはできない。
このときの計算に用いるのは、ハードウェアベンダーなどから公開されている公式な消費電力だ。こういったデータは、ある程度余裕を持って記載されている。そこでGoogleでは各機器の消費する電力を実際に計測して、消費電力を計算している。
そのうえで公式の消費電力で計算した以上のサーバをラックに格納している。
そんなことをして使用電力が容量を超えてしまうこともありえる。それを防止するのが「パワーキャッピング」。消費電力がしきい値に迫ると、システムの負荷を下げるように命令をだしてくれる。CPUを多く使う処理の優先度を下げたり、処理を中断したりする。
そんな仕組みがあるので、ぎりぎりまでラックにサーバを格納できる。サーバを高密度に配置出来れば当然コストは下がる。すごい。

まとめ

Googleのやっていることはとても理にかなったことだけど、それはとても非常識なことだった。
ただ本書がでてからの3年で、それらはだんだんと常識になってきたかもしれない。
例えば MapReduceHadoop を使って比較的簡単に利用できるようになった。
冒頭にも書いたけど、いまのGoogleはどんな進化を続けているのか、やっぱり気になる。