2010年8月24日火曜日

Webサイト高速化技法(1):物理的に近い場所にWebサーバーを置く

今回から新しいシリーズ始めます。
このブログサイトのタイトルにもなっているとおり、Webサイトのパフォーマンスを上げる手法を取り上げていきます。

第1回目からいきなり一番重要な内容を取り上げます。

(1)物理的に近い場所にWebサーバーを置く

どこに近い場所でしょうか?そうです。ユーザーに一番近い場所に置く事が重要です。

数年前、日本がインターネットブームになり始めた頃、まだ日本のデータセンターは高額で、米国の方が安くて回線も太いという理由から米国のデータセンターを借りてWebサーバーを運営している会社が多数ありました。

ですが、今では日本も十分安くなってますし、日本に住むユーザーがメインターゲットであれば当然サーバーは日本に置くべきです。

なぜ近いとパフォーマンスが良いのか?

理由は簡単です。

光でさえ地球1周するのに133msかかります。

光がそれだけかかるのに、通信はルーター等の接続機器を通る段階でルーティング処理が入り、余計に時間がかかります。

また、htmlの仕様上、1回だけの取得では最近の綺麗なWebサイトは表示されません。簡単に良くあるパターンを説明すると、

・html ファイルを取得
・その html ファイルに記載されている css ファイルを取得
・その css ファイルに import で記載されている css ファイルを取得
・その css ファイルに記載されている gif ファイルを取得

Webサーバーが米国にあるとした場合、たったこれだけでも地球を4周します。これらは並列には処理できないので、順次処理され、余計に時間がかかります。

最近の1html内に含まれるファイル数が平均30~50ファイルあるようなページではサーバーの物理的な場所の違いだけで軽く2~3秒の差が出てきます。平均で5~6秒という統計もあります。

ここである統計の記事を紹介します。

・ページの反応速度が0.1秒遅くなると、売上が1%ダウンする。(出典:Amazon調査)
・ページの反応速度が0.5秒遅くなると、アクセス数が20%ダウンする。(出典:Amazon調査)
・表示スピードが1秒遅れると、PVは11%、コンバージョンは7%、顧客満足度は16%ダウンする。(出典:Aberdeen Group調査)

このように、表示の遅れはビジネスに大きなダメージを与えます。

ファイル数を減らすとか、キャッシュサーバーを使うとか、いろいろな手段はありますが、それらよりもまずは、サーバー自体を物理的に近い場所に置くことを最優先にお勧めいたします。携帯ECサイトのいくつかはキャリアに直接専用線を引いて0.1秒にこだわっています。それだけの利益をもたらす場合は十分に投資に値します。

CDNでもいいの?

最近は CDN を使ってグローバル対応している企業も増えてきました。

ゲーム業界やエンターテインメント業界などの世界でコンテンツ販売することで利益を出す構造になりつつあるビジネスでは、これらの反応速度は最重要課題です。こういった企業から順に CDN などを使って世界中どこでも「近い」状況を作っています。最近のAkamai社長のコメントでは、コンテンツビジネスだけでなく、企業サイトもCDN化が進行しているようです。株主総会の動画配信など、ピーク時のアクセス数が想像できない場合などはCDNが特に有効です。

そこまで予算を投下できないという場合は

amazon EC/2 などの安く使えるクラウド環境を上手く利用する方法もあります。世界中にあるクラウド環境を利用して、リモートで同期を取り、ユーザーのIPアドレスから最も近いサーバーを判断してリダイレクトさせる。それ以降はそのサーバーにアクセスさせるようにすれば、今より2~3秒は早いアクセス速度を実現できます。仮想 CDN ですね。ただ、この場合は同期をとる場合などのセキュリティや運用方法に気を付ける必要があります。同期を取るポートにはIP制限をかけ、一定の時間のみアクセスできるようにする等をして対策を練る事で改ざん予防をすることをお勧めします。

次回、その(2)は・・・、まだ考えてません。近いうちに書いてアップします。

それでは。