Google を支える技術

Google を支える技術 を読みました。

Google のバックエンドで動いている各種分散処理システムに関しては Google 自身から論文がいくつも発表されています。それらの論文をはじめとする比較的最近の情報ソースをベースに、ある程度かみ砕いて要所要所を紹介するという内容でした。加えて著者の西田圭介さんは OpenCobol (COBOL を C 言語に変換しコンパイルする gcc のフロントエンド) を開発された、技術的なバックグラウンドがしっかりしている方であるようで、内容は信頼できると思います。

自分はこれまで Google のバックエンドの各種ソフトウェアについては方々で耳にしていましたが、漠然と何をするものか程度のことしか知りませんでした。

  • Web 検索の基本的な仕組みと
  • それにまつわる Google が直面した問題、特に大規模処理
  • それを支えるために開発された各種ソフトウェアはどのような仕組みになっているか、
  • そのソフトウェアを動作させるためのデータセンターの規模はどのようなものか
  • 且つ、それらソフトウェアを作るための体制はどんな体制か

というのが一連の流れで知ることができたのがとても良かったです。GFS、MapReduceBigTable がどのような意図を持って開発され、どのような用途に使われているかというのがよく分かりました。

Google の各インフラの要素技術それぞれは、確かに凄いのですが、難しすぎて何をやっているかよく分からないという物ではなく、思ったよりもシンプルな原理で動作しているのでした。OS や言語処理系の動作原理を大規模システムまで拡張した、という類のものが散見されます。それらのソフトウェアを整合性の取れた構成とあれだけのスケールで作り上げている体制がやはり驚異です。

それぞれのミドルウェアはそれ単体で独立して動いているのではなく、GFS が MapReduceBigTable を支え、それらをまた別の分散システムである Chubby が支え、且つ各々の入出力はプロトコルバッファと呼ばれるデータ構造言語で定義されたデータで結合されているといった具合に、大規模なソフトウェアが階層をなし協調動作して動いています。これだけ大規模なソフトウェアをうまく階層化するには、技術力は当然のこと、一貫した方法でそれらを構築する組織力が大きく問われることでしょう。

Google も巨大企業になりつつあり、昨今では色々な話も耳にしますが、整理された技術的側面を見て、改めて凄い会社だなと感じました。Google のインフラは今も変わらず、むしろこれまでよりもずっと速いスピードで拡大を続けているようです。

個人的には IIR輪読会 で知ったことを、実践として補完することができる内容だったのも有意でした。

Web の大規模システムに興味がある方に一読の価値あり、な書籍だと思います。

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