« オーガニック? | トップページ | 『ウェブ時代 5つの定理』 »

『Googleを支える技術』

Googleを支える技術 ~巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)
『Googleを支える技術 巨大システムの内側の世界』
著/西田圭介
技術評論社

Googleのシステムについて、詳細にわかりやすく解説した本。
非常におもしろい。

第1章は、初期のGoogleのシステムを基に、
クローリング、インデックス生成、ランキングなど
検索エンジンの基本的な仕組みを解説。
プログラミングの知識がなくてもわかりやすい説明で、
グーグル検索の裏側が理解できてわくわくする。
(いや、本当。これくらいわかりやすいと、
自分でグーグル作れるんじゃないかと錯覚するほど)

第2章は、大規模化するにつれ、グーグルがシステムをスケールアウトし、
どのように分散化を実現しているか解説。
安価なPCを大量に使うことで分散化し、
障害が起きてもシステム全体としては動作を続けられるような設計や、
大規模なデータベースをいかに効率よく読み書きできるかなど、
グーグル検索の速度の秘密がわかる。

といってもこのへんから解説はわかりやすいものの、
話がかなりマニアックになってくるので、
(大規模なデータテーブルの作り方とか分散ロックとか)
システム開発者でもなければ、「へー、そうなんだ」みたいな話。
ただ、全体に流れるグーグルの設計思想みたいなものにちょっと感動する。

第5章はデータセンターの話。
PCの消費電力をいかにして削減できるか、
ハードウェアの障害はどんな確率でおきるか、
グーグルはいくつもテストを行なって検証している。

第6章は、有名な20%ルールをはじめ、
グーグルがどんな環境で開発を行なっているかという話。
開発に用いるプログラミング言語は「C++」、「Java」、「Python」で、
使用言語やコーディング規約が定められていて、
コードをほかの開発者にレビューしてもらうとか
ドキュメントを書くことが推奨されているとか、
当たり前だけど、意外とオタク気質なだけじゃない面もあったり。

理系的な内容を文系に落とし込み、
素直に「グーグルってだからすごいのか」と思える内容になっている。
逆にシステム開発者だったら、参考になる話が多いのでは。

◆読書メモ

・クローラを動かし始めた頃はまだ存在が知られておらず、
「うちのサイトをよく見に来てくれてるね」というメールが届くこともあった。

・ハードウェアはなるべく安価に普及しているものを使い、
その性能を十分に引き出すソフトウェアを自分たちで作る。
普段使っているPCを大量に使って、世界規模の分散コンピュータシステムを
作り上げる。それがGoogleの選んだ戦略。

・Googleが2005年に発表した論文では、このままでは
近いうちにハードウェアより電気代のほうが高くなると警告している。
実際、過去にはGoogleがあまりにも電気を使い過ぎるので、
電気代が支払えずに倒産してしまったデータセンターがいくつもある。

・Googleはマシンの消費電力を計測する際に、
実際に一台一台調べる代わりに、CPU使用率と消費電力の相関関係を調べ、
CPU使用率だけを手掛かりに1%未満の誤差で消費電力を調べた。

・Googleによると、もしも世界中の1億台のPCの電源を改良すれば、
3年で400億kWhの電力削減になり、50億ドルが節約できるだろうと試算しています。

・Googleではドキュメントを書くことが重視されており、開発者によっては
コーディングするのと同じくらいドキュメントも書いている。

・ソースコードは全社で単一のリポジトリに格納され、誰でも自由に見ることが可能で、
他の開発者のコードを修正してパッチを送ることも推奨されています。

・開発者が日常的に利用するOSとしては、Ubuntsuを独自にカスタマイズした
Goobuntsuという社内向けディストリビューションがある。

« オーガニック? | トップページ | 『ウェブ時代 5つの定理』 »

「書籍・雑誌」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/27590/20656394

この記事へのトラックバック一覧です: 『Googleを支える技術』:

« オーガニック? | トップページ | 『ウェブ時代 5つの定理』 »