最大手の検索エンジンを提供している「Google」は、大多数の人間が同時アクセスしても、いつでもスムーズにサイト利用することができます。
Googleはどのようなサーバーシステムを構築していて、なぜほとんどサーバーダウンを起こさないのか?それを調査したので、分かったことを報告します。
「Google」のサーバー構築環境
Googleのサーバ数とサーバーの構成
2012年7月時点で、Googleが稼働させているサーバーの数は「約1650万台」とGoogleに公表されています。
2008年6月時点での公表では、Googleが構成したサーバーラックの収納台数は1つにつき40台であり、Googleのクラスタの構成単位は1800台とされています。
スポンサーリンク
Googleは内部の情報をめったに公開しようとしないため、以上のデータはGoogleが過去に公開したものであり、最新の状況がどうなっているかは分かりません。
ネット上に公開されたデータ量の増加と、Googleが取り扱うデータの種類が急増していることから、Googleが稼働させているサーバーの数は2012年の時点よりも飛躍的に増加していると考えられます。
Googleはごく普通の品質のサーバーを利用する道を選択した
Googleは高価で高品質なハイエンドマシンを1台持つことよりも、安価で普通の品質のマシンを2台持って内部のデータをバックアップし合う方が安全でより優れた方法である、と考えています。
「信頼性の高いハードウェアを1台持つよりも、信頼性はさほど高くないハードウェアを2台持った方がいいというのが、Googleの考えだ。
その場合、信頼性をソフトウェアレベルで提供する必要がある。1万台のマシンを稼働していれば、毎日、何かが故障するだろう」
スポンサーリンク
とJeff Dean氏が語っています。Jeff Dean氏は、Googleの検索の基盤となる分散システムの構築に中核的に関わった、卓越したスキルを持つエンジニアです。
スポンサーリンク
普通のハードウェアを使うことで信頼性が低くなってしまうという欠点を、Googleが提供する優れたソフトウェアの効果で欠点をカバーしよう、というのがGoogleが採択した道です。
技術の進化により通信速度の飛躍的な上昇を実現した
「2015 Open Network Summit」で、Googleの公式発表によると、Googleのデータセンターの帯域幅はこの6年間で50倍へと上昇したそうです。
スポンサーリンク
帯域幅が大幅に拡張されたことで、データセンター内でのサーバー同士での高速なデータのやりとりと、一般ユーザーからの大量のリクエストにもスムーズに応えることができるようになっています。
2015年の時点で、Googleが擁するJupiterファブリックの通信速度は1Pb/s(1秒間に1ペタビットを送信できる)を超えており、Pはペタという単位で、ギガの上のテラ、テラのさらに上がペタです。
Googleの処理能力の高さは「分散処理」がカギ
Web上へ公開されたページを効率良く検索できるようにする
「ドキュメントサーバ」の役割
Googlebotと呼ばれるWebクローラーがWebを巡回して収集してきたデータを、Webページのタイトルや要約などの検索に適した形にするのがドキュメントサーバです。
「インデックスサーバ」の役割
Googleの検索エンジンのユーザーのリクエスト内容に応じて、上記のドキュメントサーバがあらかじめ用意していたインデックスを参照し、候補となるWebページのリストを返す役割をもつのがインデックスサーバです。
「GWS(Google Web Server)」の役割
スポンサーリンク
上記のインデックスサーバが返してきた候補リストを、ユーザーが見やすい形のHTML形式にしてブラウザに表示する役割をもつのがGWSです。
利用者が居る場所へ応じて最速で検索結果を返す
Googleの検索エンジンのユーザーのIPアドレスから、「利用者が今現在居る場所」という地理情報が判明します。
世界各国に複数敷設されたGoogleのデータセンターのうち、ユーザーの居る場所に最も近い場所に在るデータセンターが、検索結果を表示することで、最速で検索できるシステムを築いています。
各データセンターはそれぞれ完全な検索クラスタを備えているため、たとえ大規模な天災や犯罪によってどこかのデータセンターが破壊されたとしても、残りのデータセンターがユーザーのリクエスト内容に応じた検索結果を表示することができます。
このようにして、Googleは検索用データをいくつものデータセンターへコピーすることで、有事の際のための保険を何重にも掛けてあるのです。
分散処理によって大規模同時アクセスにも耐えうる
Googleで人気の高い、それぞれが常に大規模アクセスがあるサービス
- Google検索
- Google Play
- Google Map
- Youtube
- Gmail
- Google Analytics
- GoogleDrive
- Ingress
- Google Play Music
- Google翻訳
これらの人気サービス(上記以外にも多数)には全世界から常に大量のアクセスが集まっているのですが、サーバーダウンや遅延も起こらず、毎日スムーズにサービス利用することができています。
Googleは、大量のサーバーを使ってユーザー達からのリクエストを分散処理すること・テクノロジー進化を進めることでサーバーとユーザー間の通信帯域幅を拡張し続けることによって、サーバーダウンを起こさずに瞬時にアクセス結果表示やデータ表示を行っています。
大企業のHPがサーバーダウンする時
特定の人気webページに大量のアクセスが集中すると、
サーバー「そんなに一度にいっぺんに対応できないよ~」
といったイメージで繋がらなくなることがあります。
スポンサーリンク
これを「サーバーダウン」と言います。
- 大企業による重大な発表・大事件などによって、何万人という一般ユーザー達が同時に大企業のホームページへ殺到したため、
サーバー側でユーザー達のリクエストに対応するのが追いつかなくなった - 大企業が利用している「サーバーの運営会社」に重大なトラブルが生じた
大企業ならば、利用料が高額な代わりに「十分な帯域幅と、人員によるしっかりとしたサーバー監視体制」を提供してくれる有名なレンタルサーバー会社を使って、自社のHPを公開していると考えられます。
しかし、上記のようにあまりにも大量にユーザーが殺到したり、データを格納しているサーバー自体が物理的に故障する事態となると、サーバーダウンしてしまいます。
Googleのように全世界から常時大量の検索リクエストを受けている大企業の場合は、処理の負荷が膨大なものとなるため、このページで解説してきたような専用のサーバーシステムを構築せざるを得ません。
通常の大企業の場合はGoogleほどの大量アクセスはまず無いので、特殊なサーバーシステムは不必要です。
そのため、突発的なアクセス数の増加やサーバーの故障によって、サーバーダウンすることがまれに起こってしまいます。
本ブログ推奨の、書籍や漫画の読み放題サービス
コメント