Googleを支える技術 ……巨大システムの内側の世界
3分でわかるQ&A:Google技術を読み解く鍵
最近,Googleのサービスを使う場面が増えてきたという方々はけっこういらっしゃるかもしれません。しかしながら,そのサービスの礎となる技術的な部分を知る機会は,これまで滅多になかったのではないでしょうか。
自分もそうかもーと,自身も思い当たったとある編集部員(以下,Q )。そんな矢先に,『Googleを支える技術 ……巨大システムの内側の世界』という書籍が,なんと発売直後に増刷決定との報せが! 聞くに,本書の著者さん(以下,A )は,一技術者としての興味を発端に「これはおもしろいことしているなぁ」と執筆にあたり,オープンな情報を一つ一つ時間を掛け丁寧に調べ,今回の一冊にまとめたとのこと。ぜひお話しを聞きたいと思ったところに,貴重な機会が廻ってきました。
- Q: Googleはいつも便利に使っているのですが,それがどう作られているかとは考えたこともありませんでした。これってやっぱり,すごい高性能コンピュータでできてるんでしょうか?
A: いえ,コンピュータそのものはありふれたものが使われているみたいですね。一般的なWebサイトで使われているものと大きく変わらないですよ。ただ,コンピュータの台数は多くて,一つのデータセンターに数千台のマシンがあるといわれています(図1)。
- Q:へえ,意外ですね。じゃあGoogleのシステムって,案外普通のWebアプリと同じようなしくみなんですか?
A: いや,それはまったく違います。コンピュータ自体は同じでも,その使い方が圧倒的というか。たとえば,Googleで何かを検索すると,数千台のマシンが一度に動き出すんです。どれか1台で検索が行われるんじゃなくて,1回の検索のために数千台のマシンを使うんです(図2)。
- Q:ええっ!1回の検索のために数千台ですか? それは何とも……検索するのが恐れ多くなりますね。Web検索って,そんなに多くのコンピュータが必要なものだったんですか。
A: Googleには100億以上のWebページが登録されているわけですからね。それほどの情報ともなると,そもそも物理的に1台のマシンには収まりきらなくなるんです。それに,たとえ収まったとしても1台では検索にとてつもなく時間が掛かってしまうんですよ。
ほとんどの人って,検索結果の最初のページしか見ませんよね? なのでGoogleは,最初に役立つ結果を並べようと大量の計算を行うんです。これを1台でやるのは大変なので,多くのマシンを使って一気に計算します(図3)。そのおかげで,利用者には一瞬で検索結果が返されるわけですね。
Webページはこれからもずっと増え続けるので,それに合わせて検索に使われるコンピュータもまだ増えていくのだろうと思いますよ。
- Q:なるほど,もはや1台のマシンには収まらないんですね……。この数千台というのは,世界全体でですか? それとも日本だけでそれだけあるんでしょうか?
A: うーん,具体的な数字は非公表なので自分にはわからないのですが,数千台規模のデータセンターが,日本を含めて世界各地にあるみたいですね。なかには数万台を超えるような大型のデータセンターもあって,すべてを合わせるとGoogleにはすでに100万台を超えるコンピュータがあるんじゃないかという噂話も耳にします。
- Q:100万台……。ちょっと想像できないほどの数ですね。
A: そうですね。もっとも,そのうちWeb検索のために使われているのはごく一部のようです。私たちが普段アクセスしているのはGoogleの表側のコンピュータで,実際にはその背後で活躍するコンピュータがほとんどだとのことです。
- Q:背後というと,具体的には何をするコンピュータですか?
A: たとえば世界中からWebページを集めて検索用のデータベースを作るとか,Googleニュースのような検索以外のWebサービスに必要なデータを作り上げるとか。
検索用のデータベースを作るにしても,それだけで大仕事です。まず,世界中のWebページを集めるともなると,それを保存するのにも何千というハードディスクが必要です。そしてその大量のデータを何万というコンピュータで処理していくわけで……。少し考えただけでも,大掛かりなシステムになることは想像できますよね。(図4)
しかも,この仕事には終わりがありません。私たちが寝ているときでも,Googleは常に世界中からWebページを集めてきて,24時間それをデータ処理し続けているんです。そして,結果として作られたデータベースは世界中のデータセンターに配信され,Web検索のために利用されます。それがGoogleの背後で動き続けるコンピュータというわけですね。
- Q:うわー,とにかくすごい量のデータがあるんですね。そして大量のコンピュータを使って,それを延々と処理し続けていると。
A: そういうことです。大規模なデータ処理を行う膨大な数のコンピュータが中央にあり,その周りに私たちが利用するGoogleの表側のコンピュータが取り巻いている。この両者を合わせたものが,Googleという巨大システムの全体像だということになります(図5)。
- Q:なるほど,なんとなくイメージできてきました。そうすると実はこの背後にあるコンピュータこそが,Googleを支える中心ということになるんでしょうか。
A: そういうことになりますね。そして,まさにそれこそが本書がテーマとする「Googleを支える技術」です。
何万ものコンピュータを集めたからといって,それが自動的に動き始めてくれるわけでもありません。Googleは何千,何万台ものコンピュータを使ってデータ処理を行うために独自の技術を開発しています。これはGoogle内部でしか使えないものなので詳細はわからないのですが,その技術的な要点だけは,Googleから発表された論文を通して知ることができるんです。
今回はそのうち代表的なものを取り上げて,Googleがどのように大規模システムを構築しているかという,その全体像をつかめるように努めました(図6)。純粋に技術者としての観点から,Googleというシステムを理解するためのお役に立てばと思います。
- Q:よくわかりました。最後に1つだけ。読者に向けて,Googleの技術を理解する上でのポイントなどありましたら教えていただけますか。
A: そうですね,重要な点を上げるとしたら,表1のようなところでしょうか。どの技術を見ても,「大規模システム」ならではの苦労と工夫がよく感じられますよ。
- Q:本日はどうもありがとうございました!
表1 大規模なシステム,Googleの技術を理解するためのポイントとは
ポイント | 説明 |
---|---|
スケーラビリティ | コンピュータの台数をただ増やすだけで,システムの性能がいくらでも向上するように設計する |
ソフトウェアによる障害対策 | 想定されるさまざまな障害に対して,人の手を介さずに動作を続けられるように設計する |
コストパフォーマンス | システムの規模を拡大したときに,最小のコストで最大の性能を得られるようにする |
質問を終えて…
正直申しますと,一ユーザとして内部の技術など思い及んだこともありませんでしたので,難しいのかなーと少々の不安も抱きつつ,お話しをうかがう形となりました。
大規模システムって何? どこが違うの? そもそもWeb検索って? などというような基本となる部分についてあれこれ質問しながら,だんだんイメージができてきました。ほんの少しだけ,Googleをはじめ世界規模の大規模システムが身近に感じられるようになった気がしています。