Googleに見る大手企業サーバーがほぼダウンしない理由

aboutserver5

特定の人気webページに大量のアクセスが集中すると、

「あのページの情報見せてよ」「この画像開いてよ」「あのページに移動させてよ」×数万人

サーバー「そんなに一度にいっぺんに対応できないよ~」

といったイメージで繋がらなくなることがあります。

これを「サーバーダウン」と言い、当ブログでもまれに過負荷で一時的にサーバーダウンすることがあります。有名大手企業…例えば「Google」などは、大多数の人間が同時アクセスしても、いつでもスムーズにサイト利用することができます。そういった大手企業は、どのようなサーバーシステムを構築しているのか?興味があったので、調べてまとめました。

スポンサーリンク

サーバーの役割とは?

aboutserver2

「サーバー (server)」は、ネットワーク上でいろいろな機能なりサービスを提供するコンピューターです。
例えば、インターネットのメールやウェブといったサービスは、どれもメールサーバーやウェブサーバーが提供するものです。
サーバーは、サーバーマシンとサーバーソフトで構成されます。
一般にはハードとソフトの両方をまとめて、単にサーバーと言ったりしますね。
提供するサービスによって、「~~サーバー」と呼ばれます。

ネットワーク全体を見渡したとき、「サーバー」という言葉は、ネットワーク上でサービスを「提供する」側を指します。
一方、サービスを「利用する」側を、サーバーに対し「クライアント」といいます。




大手企業例として「Google」のサーバー構築環境

aboutserver3

Google自身の情報(2008.6.28)

  • Googleはごく普通のサーバを使用している
  • Googleのクラスタの構成単位は1800台
  • Googleのサーバラックの収納台数は40台

それ以外の外部情報

  • Googleが稼動させているサーバ数は約1260万台(全世界のサーバ約1億台のうち12%に相当) Netcraft 2011.6現在 (実際にはGoogle独自のWebサーバソフトウェアが何個動いているかを調査)
    2012.7では約1650万台と年平均の増加率は130%という勢い。
  • Googleはハイエンドマシンではなく、フォールトトレラントソフトウェアに資金を投入する戦略を選んだ
    Dean氏曰く、「信頼性の高いハードウェアを1台持つよりも、信頼性はさほど高くないハードウェアを2台持った方がいいというのが、Googleの考えだ。その場合、信頼性をソフトウェアレベルで提供する必要がある。1万台のマシンを稼働していれば、毎日、何かが故障するだろう」

Googleの処理能力の高さは分散処理がカギ

aboutserver4

まずGoogleの戦略は、安価な大量のPCを利用して、その性能を十分に引き出すソフトウェアは自作するというものである。安く普及しているPCを使って世界規模の分散システムを作り上げるのだ。この戦略をスケールアウトという(⇔スケールアップ)。



スポンサーリンク



この戦略を進めるには、分散システムの質が問われる。Googleではラック<クラスタ<データセンターを1つのシステムとして結びつけ、相互に通信させている。しかし、もちろん数を増やせばいいというものでもない。ハードウェアは故障するし、Webページのサイズにはばらつきがあるため分散処理も容易ではない。
Web検索を全世界に提供するために、Googleのデータセンターもまた世界各地に分散配置されている。現在のGoogleは、いかにして高速な検索と高度なランキングを実現しているのだろうか。それは以下の4つのシステムが用いられている。

近くのデータセンターに接続する

利用者の地理的な場所によってIPアドレスを変えている。そして個々のデータセンターには完全な検索クラスタを備えているため、大災害などでデータセンターが壊滅的な被害を受けたとしても、利用者はどこかしらのデータセンターにつないで検索を行うことができるのだ。

多数のサーバで負荷分散する

複数のサーバを組み合わせて検索を行っている。ここで大きな役割を果たすのが、「GWS」「インデックスサーバ」「ドキュメントサーバ」の3つだ。

GWS(Google Web Server)の役割は、個々の検索リクエストの取りまとめを行うことである(ロードバランサにて調整)。インデックスサーバは、あらかじめ用意されたインデックスから検索を行い、見つかったWebページのリストを返す。ドキュメントサーバはそれぞれのWebページについて、そのタイトルや要約などの情報を作り出す。最後にGWSがそれらを見やすいHTMLに整えて、最終的な検索結果として利用者に返すというものである。

当ブログでのもう1つのGoogle特集ページは↓からどうぞ。

世界中のあらゆる情報を整理!Google社の凄いところと魅力
ネットの検索エンジンの絶対王者にして、GoogleEarthやGmailやYouTubeのような超便利サービスを提供し続けて...

一定数のページごとにインデックスを分割する

docIDによってインデックスを分割すること(shard(破片)と呼ばれる)により、どれだけWebページが増えたとしても一定時間内に検索を終えられるようになった。

多数のインデックスを一度に検索

このshardを複数のマシンに分散させることにより、短時間で検索を終えることが可能になった。




分散処理によって大規模同時アクセスにも耐えうる

aboutserver1

Googleで人気の高い、それぞれが常に大規模アクセスがあるサービス

  • Google検索
  • Google Play
  • Google Map
  • Youtube
  • Gmail
  • Google Analytics
  • GoogleDrive
  • Ingress
  • Google Play Music
  • Google翻訳

これらの人気サービス(上記以外にも多数)には全世界から常に大量のアクセスが集まっているのですが、サーバーダウンや遅延も起こらず、毎日スムーズにサービス利用することができています。

ブログ管理人も、当ブログのアクセス状況を調べるためによく「Google Analytics」を見ているのですが、リアルタイムでのアクセス状況(通常、リアルタイム解析はマシンへの負担が大きくて処理が遅延しても不思議ではない)が常によどみなく表示されていて、Googleの処理能力の高さにいつも感心しています。

Googleは大量のサーバーを使ってユーザー達からのリクエストを分散処理することによって、サーバーダウンを起こさずに瞬時にアクセス結果表示やデータ表示を行っています。




仕事カテゴリーネットサービスカテゴリー健康カテゴリー美容カテゴリー恋愛カテゴリー教育カテゴリー知識カテゴリーお楽しみカテゴリー漫画カテゴリー小説カテゴリーアニメカテゴリーゲームカテゴリー購入技カテゴリー住宅カテゴリー趣味カテゴリータグブログ内検索トップページ