『ハイパフォーマンスWebサイト』が4月発行!(サンプルPDF公開中)
Posted by Editor : 2008-03-21 9:01
オライリー・ジャパンの4月新刊として発行される『ハイパフォーマンスWebサイト ―― 高速サイトを実現する14のルール』のサンプルPDFを公開しました。
サイトを高速化してレスポンスを改善したい!って考えた場合、サーバ負荷分散装置を導入したり、システムのアーキテクチャ、アプリケーションのアルゴリズム、データベース構造の見なおしといったバックエンドでの大掛かりなパフォーマンスチューニングをエンジニアはまず考えますよね。しかし、これらはサーバの処理能力を向上させるための施策なのでサーバの負荷が高くて処理が追いつかない場合にまず検討することであり、(重要なことだけど)サイトを高速化したい場合に真っ先に取るべきステップではありません。
著者のSteve Souders氏が解析したところによると、Webブラウジングでの待ち時間の80%はなんとフロントエンドでの処理に費やされているそうです。
システムをチューニングしてパフォーマンス向上をいくらはかってもサイト高速化という意味での効果としては限界があります。高価な箱物の導入を検討する前に、まずは本書で紹介している「フロントエンドで実施する低コストなレスポンス改善手法」を試してみてはどうでしょう。
著者のSteve Souders氏は、米Yahoo!のパフォーマンス担当責任者です。Yahoo!での経験の中から「高速サイトを実現する14のルール」を導き出し、本書で実例とともに紹介してくれてます。
以下は翻訳者の武舎さんの「訳者まえがき」です。武舎さんが本書のサポートページも用意してくれています。
訳者まえがき
1年ほど前、写真共有サイトFlickrの開発者Cal Henderson氏が書いた『スケーラブルWebサイト』を翻訳しました。今はYahoo!が提供する重要なサービスのひとつとなっている巨大サイトFlickrをゼロから構築したノウハウが詰め込まれた300ページを超える大作でした。ウェブアプリケーションのアーキテクチャ、開発時のソースコード管理、サーバの負荷分散、データベースのスケーリングなどなど、非常に広い範囲を覆うもので、「自分のすべての知識を詰め込んでやる」といったようなHenderson氏の初の著作にかける意気込みが伝わってくる力作でした。
約1年後に翻訳することになったこの『ハイパフォーマンスWebサイト ―― 高速サイトを実現する14のルール』も、同じYahoo!に所属する技術者によって書かれた初めての著作ですが、『スケーラブルWebサイト』に比べると半分ほどの厚さで、対象もフロントエンドの高速化、つまりブラウザによるコンテンツの表示をいかに速くするかに絞られています。
量やカバーする範囲には大きな差があるこの2冊ですが、読者へのメッセージは同じくらい強烈です。いずれも、世界でも指折りの超巨大サイトの運営に携わったことのある者にしか経験できない実体験に基づいているのです。
この本の著者のSteve Souders氏はYahoo!でフロントエンドのパフォーマンス改善を専門に担当しています。Yahoo!のようにページビューの多いサイトとなると、1ページの転送にかかる時間を0.1秒でも短くできれば、トータルではサーバの負荷がかなり減らせることになり、結果的にサーバを増強せずに利用者に対するレスポンスも改善できるというわけで、Souders氏率いる専門のチームが誕生したということなのでしょう。
サーバの負荷を減らそうとすれば、バックエンドのアプリケーション側で対策を取りたくなるのが、一般的な(特に開発者の)発想ではないでしょうか。アプリケーションのアーキテクチャやアルゴリズム、データベースの構造などを見直して、何とか高速化を実現しようとがんばります。処理速度が2倍になれば、利用者の待ち時間は半分にできるはずです。
ところが、それは誤りである、いや少なくとも最初に取るべきステップではないというのが、Souders氏の主張です。なんと、ユーザーの待ち時間の8割前後は、ブラウザにデータが転送される時間とブラウザによって描画される時間に使われているというのです。バックエンドの処理をどんなに速くしても、それだけでは1割程度しか高速化できないというのです。
Souders氏の主張は論理的で明解です。技術者が漠然とイメージしているパフォーマンスに関する常識を、先入観を廃して自らツールを作成して検証し、「常識」を無条件で信じてはいけないことを知らせてくれます。HTTPの仕組みの説明から始まり、どこにボトルネックがあるのか、どうすれば速くなるのかを解明し14の分かりやすいルールにまとめてくれました。そして、この14のルールのいくつかを適用するだけで、応答時間は簡単に半分以下に削減できるというのです。
たとえば、ルール6は「スクリプトは最後に置く」というものです。JavaScriptの本の多くには、スクリプトは先頭に置くようにと書かれていますが、Souders氏は「パフォーマンスの観点からは誤りだ」と主張します。
最初にこの本を読んだとき「本当だろうか?」と思った私は、実際に自分のサイトで試してみました。比較的大きなスクリプトの読み込みを先頭から最後に移動してみたところ、さすがに光ファイバーの接続では「少しは速くなったかな」といった程度でしたが、携帯電話から試してみると、その差は歴然でした。スクリプトを最後に置いた方は、すぐに表示が始まるのに対して、最初に置くと、5秒以上真っ白な画面が表示されてしまうのです。なぜこうなるかは、Souders氏がとてもていねいに説明してくれてありました。
そもそも、私が時間をかけてこんな実験をしてみなくても、Souders氏の主張が正しいことは明白ではあったのです。世界の巨大サイトであるYahoo!の数多くの開発チームが既に実証してくれているのですから。
皆さんも、「14のルール」を実際にご自分のサイトで試してみてください。ルール2は、そう簡単には試せませんが、それ以外はそれほどのコストをかけずに試せるものばかりです。ちょっとした時間をかけるだけで表示速度が2倍になり、利用者には喜ばれサーバの負荷も軽減されるのですから、これほど「おいしい」話はそうはありません。たとえ、Yahoo!のような巨大サイトではなくても、表示が速いほうがそのサイトの人気が上がることは間違いがないところでしょう。
2008年3月
訳者代表 武舎 広幸