最近、
自分もそうかもーと、
- Q: Googleはいつも便利に使っているのですが、
それがどう作られているかとは考えたこともありませんでした。これってやっぱり、 すごい高性能コンピュータでできてるんでしょうか? A: いえ、
コンピュータそのものはありふれたものが使われているみたいですね。一般的なWebサイトで使われているものと大きく変わらないですよ。ただ、 コンピュータの台数は多くて、 一つのデータセンターに数千台のマシンがあるといわれています。 - Q: へえ、
意外ですね。じゃあGoogleのシステムって、 案外普通のWebアプリと同じようなしくみなんですか? A: いや、
それはまったく違います。コンピュータ自体は同じでも、 その使い方が圧倒的というか。たとえば、 Googleで何かを検索すると、 数千台のマシンが一度に動き出すんです。どれか1台で検索が行われるんじゃなくて、 1回の検索のために数千台のマシンを使うんです。 - Q: ええっ!
1回の検索のために数千台ですか? それは何とも……検索するのが恐れ多くなりますね。Web検索って、 そんなに多くのコンピュータが必要なものだったんですか。 A: Googleには100億以上のWebページが登録されているわけですからね。それほどの情報ともなると、
そもそも物理的に1台のマシンには収まりきらなくなるんです。それに、 たとえ収まったとしても1台では検索にとてつもなく時間が掛かってしまうんですよ。 ほとんどの人って、
検索結果の最初のページしか見ませんよね? なのでGoogleは、 最初に役立つ結果を並べようと大量の計算を行う んです。これを1台でやるのは大変なので、多くのマシンを使って一気に計算します (図1)。そのおかげで、 利用者には一瞬で検索結果が返されるわけですね。 Webページはこれからもずっと増え続けるので、
それに合わせて検索に使われるコンピュータもまだ増えていくのだろうと思いますよ。 - Q: なるほど、
もはや1台のマシンには収まらないんですね……。この数千台というのは、 世界全体でですか? それとも日本だけでそれだけあるんでしょうか? A: うーん、
具体的な数字は非公表なので自分にはわからないのですが、 数千台規模のデータセンターが、 日本を含めて世界各地にあるみたいですね。なかには数万台を超えるような大型のデータセンターもあって、 すべてを合わせるとGoogleにはすでに100万台を超えるコンピュータがあるんじゃないかという噂話も耳にします。 - Q: 100万台……。ちょっと想像できないほどの数ですね。
A: そうですね。もっとも、
そのうちWeb検索のために使われているのはごく一部のようです。私たちが普段アクセスしているのはGoogleの表側のコンピュータで、 実際にはその背後で活躍するコンピュータがほとんど だとのことです。- Q: 背後というと、
具体的には何をするコンピュータですか? A: たとえば世界中からWebページを集めて検索用のデータベースを作るとか、
Googleニュースのような検索以外のWebサービスに必要なデータを作り上げるとか。 検索用のデータベースを作るにしても、
それだけで大仕事です。まず、 世界中のWebページを集めるともなると、 それを保存するのにも何千というハードディスクが必要です。そしてその大量のデータを何万というコンピュータで処理していくわけで……。少し考えただけでも、 大掛かりなシステムになることは想像できますよね。 (図2) しかも、
この仕事には終わりがありません。私たちが寝ているときでも、 Googleは常に世界中からWebページを集めてきて、 24時間それをデータ処理し続けているんです。そして、 結果として作られたデータベースは世界中のデータセンターに配信され、 Web検索のために利用されます。それがGoogleの背後で動き続けるコンピュータというわけですね。 - Q: うわー、
とにかくすごい量のデータがあるんですね。そして大量のコンピュータを使って、 それを延々と処理し続けていると。 A: そういうことです。大規模なデータ処理を行う膨大な数のコンピュータが中央にあり、
その周りに私たちが利用するGoogleの表側のコンピュータが取り巻いている 。この両者を合わせたものが、Googleという巨大システムの全体像だということになります (図3)。 - Q: なるほど、
なんとなくイメージできてきました。そうすると実はこの背後にあるコンピュータこそが、 Googleを支える中心ということになるんでしょうか。 A: そういうことになりますね。そして、
まさにそれこそが本書がテーマとする 「Googleを支える技術」 です。 何万ものコンピュータを集めたからといって、
それが自動的に動き始めてくれるわけでもありません。Googleは何千、 何万台ものコンピュータを使ってデータ処理を行うために独自の技術を開発しています。これはGoogle内部でしか使えないものなので詳細はわからないのですが、 その技術的な要点だけは、 Googleから発表された論文を通して知ることができるんです。 今回はそのうち代表的なものを取り上げて、
Googleがどのように大規模システムを構築しているかという、 その全体像をつかめるように努めました。純粋に技術者としての観点から、 Googleというシステムを理解するためのお役に立てばと思います。 - Q: よくわかりました。最後に1つだけ。読者に向けて、
Googleの技術を理解する上でのポイントなどありましたら教えていただけますか。 A: そうですね、
重要な点を上げるとしたら、 表1のようなところでしょうか。どの技術を見ても、 「大規模システム」 ならではの苦労と工夫がよく感じられますよ。 - Q: 本日はどうもありがとうございました!



ポイント | 説明 |
---|---|
スケーラビリティ | コンピュータの台数をただ増やすだけで、 |
ソフトウェアによる障害対策 | 想定されるさまざまな障害に対して、 |
コストパフォーマンス | システムの規模を拡大したときに、 |
質問を終えて
正直申しますと、
大規模システムって何? どこが違うの? そもそもWeb検索って? などというような基本となる部分についてあれこれ質問しながら、
―初出URL:http://