Googleを支える技術 (西田圭介)

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

非技術者の私にもGoogleの技術力の凄さがイメージできる良書であった。情報系大学3年生ぐらいを対象とのことだが、実務でシステム開発を行った人間であれば問題ないだろう。本書を読むことで分かったGoogleの凄さは、Google社員でない私からすると恐ろしさであり、戦いづらさだが、それは主に2点だ。1点目は、巷で言われているとおりのファイルシステムからDBまでを自前の巨大分散処理技術で実装する圧倒的な技術力。2点目は、膨大なデータを元にしたFactの把握と最適解を確実に打っているだろう仕事のやり方である。
1点目の解説自体は本書を読むべきだろうし、私が語っても無理解から誤る可能性が高いので是非本書を読んでもらいたい。
2点目は、本書に散りばめられているGoogle論文から引用された調査結果の数々である。Googleにとって電気代が大きなコストなのは理解できるが、電気代削減のためにマザーボード、CPUまで遡って原因を訴求し、あげくは電源を自前で作るところまで持っていく、圧倒的なFactの積み上げかたである。学者気質だからこそできる原因追究への執着であろう。さらに、そこからは純粋に理系な頭でロジックの積み上げたうえでうち手が決定される。
電源自体の機能は市販のものより劣る(本書参照)ので、ここで問題なのはHWに関する技術力ではない。どの企業でもやろうとしている、課題設定・原因追究・打ち手の決定・実行・効果測定という当たり前のプロセス。これを電気代を減らすという課題に対して、電源装置を自前で作るという解まで持ってこれる企業は多くないだろう。当たり前のことをここまで執念深く深くやれるという点が恐ろしいのだ。膨大なデータ解析に基づく打ち手の決定という意味では、このCNETの記事もGoogleのそういった本質的強みの事例であろう。検索サイトの舞台裏--グーグル幹部が明かす改善手法
一方で、弱点のようなものも見える。それは、Googleがミッションクリティカルなシステムを構築が苦手だろうということだ。Googleの分散技術は、データが失われる、HWが壊れることを前提として構築されている。復旧は恐ろしく速い。しかし、それでもデータが失われることを前提としており、失われている時間が20分か、1時間か、3日かに関わらずデータを消失してしまうアーキテクチャである以上、金融などのミッションクリティカルなシステムはGoogleが本質的に苦手とするところであろう。こんな事件は、顧客の決済口座アカウントでは許されないからだ。もちろん、銀行の基幹システムでもデータセンターが3箇所ぐらい一気に爆破されればデータは吹っ飛ぶかもしれないが、その設計思想としてデータ消失は許されないものとして構築されている点が重要だと思うのだ。GoogleアーキテクチャはあくまでもWeb的思想のベストエフォート感が強い。また、こちらのブログではGoogleトランザクションを捨てたという点について言及されていて、私の浅薄な議論よりよほど本質を突いているのでお勧めである。


技術系の著書なので引用は避け、本書に明記されていた出典元の論文を列挙する。本書は下記10本の論文を私のように知識の浅い人間にも分かるように平易に説明してある。
巷で言われているGoogleの技術の何が凄いか?を知りたい人々は手にとって損はない1冊である。下記10本の論文の中身を一気に掴みとれるというだけでも、私のような非技術者には垂涎の一冊だろう。

Web Search Engine論文
「The Anatomy of a Large-Scale Hypertextual Web Search Engine」(Sergey Brin/Lawrence Page著、Computer Networksm Vol.30(1998),p.107-117)
http://infolab.stanford.edu/~backrub/google.html

GoogleCluster論文
「Web Search for a Planet: The Google Cluster Architecture」
Luiz Barroso, Jeffrey Dean, and Urs Hoelzle
http://labs.google.com/papers/googlecluster.html

GFS論文
「The Google File System」
Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung
http://labs.google.com/papers/gfs.html

BigTable論文
Bigtable: A Distributed Storage System for Structured Data」
Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, and Robert E. Gruber
http://labs.google.com/papers/bigtable.html

Chubby論文
「The Chubby Lock Service for Loosely-Coupled Distributed Systems」
Mike Burrows
http://labs.google.com/papers/chubby.html

Paxos Made Live論文
「Paxos Made Live An Engineering Perspective」
Tushar Chandra, Robert Griesemer, and Joshua Redstone
http://labs.google.com/papers/paxos_made_live.html

MapReduce論文
MapReduce: Simplified Data Processing on Large Clusters」
Jeffrey Dean and Sanjay Ghemawat
http://labs.google.com/papers/mapreduce.html

Sawzall論文
「Interpreting the Data: Parallel Analysis with Sawzall」
Rob Pike, Sean Dorward, Robert Griesemer, Sean Quinlan
http://labs.google.com/papers/sawzall.html

Power Provisioning論文
「Power Provisioning for a Warehouse-sized Computer」
Xiaobo Fan, Wolf-Dietrich Weber, Luiz Andre Barroso
http://labs.google.com/papers/power_provisioning.pdf

Disk Failure論文
「Failure Trends in a Large Disk Drive Population」
Eduardo Pinheiro, Wolf-Dietrich Weber, Luiz Andre Barroso
http://research.google.com/archive/disk_failures.pdf