グーグルがWebを高速化するために何をしているか

2010年7月5日

本のページをめくるように、どんなWebページも素早く表示できるようにする。グーグルは以前からWebの高速化に取り組んできました

6月22日から、米サンタクララで行われていたWebサイトのパフォーマンスと運用に関するオライリーのイベント「Velocity 2010」では、グーグルのUrs Hölzle氏がWebの高速化技術について「Speed Matters」(スピードの重要性)というセッションで紹介ています。

Webを高速化するためにどのような技術があり、あるいはどのような技術が検討されているのか、このセッションの内容を紹介しましょう。

スピードは重要だ

fig

私が話そうとしているのは、「Speed matters」(スピードの重要性)についてだ。Webは空飛ぶジャガイモより速くなれるだろうか? どのくらい速くなれるだろうか? (参考:オペラがやってくれた! グーグルの空飛ぶジャガイモに対抗

調査によると、Webページの表示には平均で4.9秒かかる。Webページの平均的なサイズは320KB、利用者の帯域幅は1.8Mbpsなので、計算では1.4秒以内に表示されなければならないのに、そうなっていない。どうしてだろうか? 何に時間がかかっているのだろうか?

fig

Webページが表示されるまでのシーケンスを見ていこう。そうすると、DNSのルックアップ、TCPコネクションのセットアップ、サーバ処理待ち、データ送信、パース処理とJavaScriptの実行などの多くの処理が行われている。Webページは、思ったより複雑なものなのだ。

fig

平均的なWebページは320KBの大きさで、44のリソースが含まれており、7回のDNSルックアップが実行されている。こうしたもののアンサンブルがWebページだ。

われわれのゴールはWebページを素早く、本を読むように素早く表示することだ。そのためにどのような改善が行われているのか。

最初に考えなければならないのはWebブラウザを速くすること。Chromeは高速化に注力してきた。JavaScriptも高速化し、DNSプリフェッチを採用するなどしてきた。そして市場に、Webブラウザの高速化のために何ができるかを示してきた。

その結果、メジャーなブラウザでも高速化が実現している。

fig

そしてブラウザを超えて、高速化のための取り組みを行っている。80年代前半のTCP/IPプロトコルが前提としていた回線は大きく変わった。かつて56Kbitラインは速い回線だったのだ。インターネットはいまより1万倍は遅かった。そこでTCPをモダンなネットワークにチューンすべく、IETFにドラフトを提出している。

これにより、アプリケーションやWebページを変えることなく12%は高速化される。

fig

DNSの改善もある。グーグルは利用者にいちばん近いWebサーバにアクセスしてもらうようにするため、グーグルにアクセスしてくる利用者がどこにいるかを知りたい。

しかし実際には、ISPが全ユーザーのDNSサーバへの問い合わせをまとめてしまうので、グーグルは実際の利用者がどこからアクセスしているのかは分からない。そこでDNSのリクエストに利用者のIPアドレスをつけることで、いちばん近くて速くアクセスできるデータセンターを個々の問い合わせに対して返すことができるようになる。

fig

SSLにも速度の問題がある。SSLはデータをやり取りする前に、2回のハンドシェイク、2回のラウンドトリップが発生する。これを回避するような実装が可能だ。Android SSLはこれで10%の高速化を実現した。

fig

HTTPには非常に大きな改善の可能性がある。まず、Webページに含まれる44の要素をロードするために、44回もリクエストを繰り返して呼び出している。そのたびにサーバのレスポンスを待たなければならない。

SPDY(スピーディ)という技術をオープンソース化しており、Chromeとグーグルのサーバサイドで実装を実験中だ。Apache対応のモジュールもある。これによりページのダウンロードが25%高速化した。トップ25のサイトでやりとりされるパケットが40%も減少したのだ。

さらにSPDYのテクニックとしてヘッダ圧縮もしている。クライアントがサーバへ問い合わせるときには、毎回ヘッダが送信されている。ヘッダにはブラウザのバージョンや文字コード等々の情報が含まれているが、これは実際には最初の1回だけやりとりすれば十分だ。このテクニックをCNETのWebサイトで試したところ88%のヘッダを削減することができた。

fig

最後にインフラストラクチャについての改善もある。Public DNSの提供だ。グローバルに分散された高速なDNSを提供している。1Gbpsブロードバンドのテストも始めた。また、jQueryのような、多くのWebサイトが利用しているリソースのホスティングも行っている。

fig

多くのWebサイトは、プロトコルのレベルで回線の能力を損なっている。グーグルはユーザーがもっと高速な経験をするために、そうした課題を修正していこうとしている。

私がこうして話している理由は、スピードがどれだけ重要かをお伝えするためだ。ラリー・ペイジはよく、「プロダクトマネージャとして、もっとも大事な機能はスピードだと認識すべきだ」といっている。グーグルは検索結果のランキングにもスピードを反映させた。使いやすいWebサイトのため、ユーザーにクリックを恐れさせないようにするためにも、スピードは大事なのだ。

最後に、ここで紹介した技術の参照先を紹介しておく。

関連記事

あわせて読みたい

Web技術 Web標準 Google SPDY Webブラウザ




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本