Googleを支える技術(西田圭介/技術評論社)
Googleが世界中に分散して持っている、数十万台のコンピューターがどのような仕組みで動いているかということをテーマに解説した本。といっても、その技術の本当のコアの部分は、やはり秘密のベールに隠されているので、Googleがカンファレンスなどで一般に公開しているドキュメントを元に、その情報をまとめた内容になっている。
著者自身がGoogleの開発者でも関係者でもないため、多くの内容は「~だそうです」「~とのことです」という、伝聞にもとづいた、あまり自信なさげな言い方で歯切れが悪く、その点が読んでいてフラストレーションになった。
後半は、コスト構造についての説明で、そこはやたらと細かく消費電力の計算などが説明されているのだけれど、Googleの技術とは直接関係ないことなので、こういうところだけ詳しく書かれても・・という感じで、あまり意味があると思えなかった。
しかし、前半部分の章で説明されている、検索エンジン用のインデックスデータの持ち方や、数千台規模のコンピュータによる分散処理の方法などは、かなり勉強になるところが多く、それだけでも読む価値はある。このGoogleの、システムのスケール拡大に対して極端に柔軟な設計は、本当に見事なものだと思う。
その多くは、Googleから公開されている情報なので、一般の人でも資料を探せばネット上で見つけることが出来る内容なのだけれども、それがわかりやすくまとめられている点で、とても役立つ本だった。
【名言】
あるときは、Googleからの大量アクセスに気づいたWebサイトの管理者から「やあ。うちのサイトをよく見に来てくれてるね。気に入ってもらえたかな?」というメッセージが届いたり。(p.20)
一般的に、コンピュータシステムの性能を向上させるには二つの方法があります。一つはスケールアップで、より優れたハードウェアを導入するという方法です。もう一つはスケールアウトで、こちらはハードウェアの数を増やす方法です。(p.42)
GFS(Google File System)では、「ファイルは常にバックアップされた状態」にあります。バックアップという作業を特別に行わずとも、システムが常に複数のコピーを保持し続けます。(p.66)
明らかな傾向として、ディスクドライブの温度が低いほど故障率が高まるという驚くべき結果です。多くのドライブは25~30度前後に保たれていたようですが、実は30~40度あたりの高い温度のほうが故障しにくくなるようです。(p.229)
googleでは仕事は与えられるものではなく、自分で見つけ出すものであるようです。マネージャーによって一方的に仕事を割り振られるということは基本的になく、開発者は数あるプロジェクトの中から自分に合ったものを受け持つか、あるいは自分から新しいプロジェクトを提案することになります。誰も見向きもしないような魅力のないプロジェクトは忘れ去られてなくなります。こうして開発者自身によるプロジェクトの自然淘汰が行われ、それを生き残ったものだけがGoogleのサービスとして私たちの前に提供されることになります。(p.249)