前回、Googleの検索エンジンは、検索サーバ、検索バックエンド、インデックスの3つの要素から成り立っていることを解説した。ここではそれらの大量のデータをどのように分散・データ処理を行っているか、3回にわたって解説する。まずはGoogleの戦略と検索クラスタについてまとめる。
1 Googleの大規模化
現在のGoogleが初期と比べて圧倒的に異なるのは、そのスケールである。初代Googleは数台のPCで動いていたが、現在では数十万台が稼働しているともいわれている。
コンピュータシステムは、ただ台数を増やせば速くなるというものではない。増やしたコンピュータをうまく活用するようにソフトウェアを設計しなければ、その性能を生かすこともできない。
世界中からの検索リクエストに応えるため、Googleがどのようなシステムを構築しているのだろうか。以下にその戦略と検索システムについて述べる。
2 ネットを調べつくすスケールアウト戦略
まずGoogleの戦略は、安価な大量のPCを利用して、その性能を十分に引き出すソフトウェアは自作するというものである。安く普及しているPCを使って世界規模の分散システムを作り上げるのだ。この戦略をスケールアウトという(⇔スケールアップ)。
この戦略を進めるには、分散システムの質が問われる。Googleではラック<クラスタ<データセンターを1つのシステムとして結びつけ、相互に通信させている。しかし、もちろん数を増やせばいいというものでもない。ハードウェアは故障するし、Webページのサイズにはばらつきがあるため分散処理も容易ではない。
2つの基盤システム—GFSクラスタ、Work Queueクラスタ
こういった課題を解決するために、Googleでは「GFSクラスタ」と「Work Queueクラスタ」という基盤システムを構築した。GFS(Google File System)とは、多数のマシンを用いて巨大なファイルシステムを作り上げる技術である(HDDに対応)。Work Queueとは、OSのタスク管理を複数のマシンで分散して行うしくみである(CPUに対応)。HDDとCPUを無駄なく活用し、クラスタ単位で機能を実現することで、開発者が個々の障害について考えることから解放され、新しい技術開発を行うことができるようになったのである。
それでは、具体的に検索エンジンを改良するためにはどうすればいいのだろうか。ここでは特に検索サーバの課題について整理する(検索バックエンド、インデックスについては後述)。
3 検索クラスタの4つの特徴
Web検索を全世界に提供するために、Googleのデータセンターもまた世界各地に分散配置されている。現在のGoogleは、いかにして高速な検索と高度なランキングを実現しているのだろうか。それは以下の4つのシステムが用いられている。
近くのデータセンターに接続する
利用者の地理的な場所によってIPアドレスを変えている。そして個々のデータセンターには完全な検索クラスタを備えているた め、大災害などでデータセンターが壊滅的な被害を受けたとしても、利用者はどこかしらのデータセンターにつないで検索を行うことができるのだ。
多数のサーバで負荷分散する
複数のサーバを組み合わせて検索を行っている。ここで大きな役割を果たすのが、「GWS」「インデックスサーバ」「ドキュメントサーバ」の3つだ。
GWS(Google Web Server)の役割は、個々の検索リクエストの取りまとめを行うことである(ロードバランサにて調整)。インデックスサーバは、あらかじめ用意されたインデックスから検索を行い、見つかったWebページのリストを返す。ドキュメントサーバはそれぞれのWebページについて、そのタイトルや要約などの情報を作り出す。最後にGWSがそれらを見やすいHTMLに整えて、最終的な検索結果として利用者に返すというものである。
一定数のページごとにインデックスを分割する
docIDによってインデックスを分割すること(shard(破片)と呼ばれる)により、どれだけWebページが増えたとしても一定時間内に検索を終えられるようになった。
多数のインデックスを一度に検索
このshardを複数のマシンに分散させることにより、短時間で検索を終えることが可能になった。
最後に
著書のまとめに、Google全体を通して貫かれている基本的な考え方が3つ挙げられている。
- ソフトウェアによって信頼性を高める
- ハードウェアを増やして負荷分散する
- コストパフォーマンスの高いハードウェアを選ぶ
リスクを最大限に回避しつつ、ユーザーに最良のものを届けようとしている様子がうかがえる。特に「ハードウェアが故障してもシステム全体としては動作を続けられるよう、ソフトウェアによって信頼性を高める工夫がされている」といった気配りからも、Googleがここまで多くの人に利用されるサービスになったことに納得させられる。
次回はGoogleの分散ストレージについてまとめる。
![]() |