ゆーすけべー日記

はてなBlogってどーなの!?

静的コンテンツを Amazon S3 でサーブさせるのはなかなかいい

mod_perl などを使ったアプリケーションの場合、 パフォーマンスを引き出すための Web サーバ構成は apache を使った場合最低でも、 「アプリケーションサーバ(e.g. apache with mod_perl)」、 「静的コンテンツをサーブするサーバ」の2つが必要になると思います( lighttpd とか使ったらまた違うかもしれません)。 ただ、俺の場合この 2つの apache を用意するのが面倒なパターンというのがあって、 例えば先ほどの「sugokuii beta」の場合がそうです。 つまり、

  • アプリケーションへの負荷はそこそこ高い
  • だが、静的コンテンツは非常に少ない(e.g. jsひとつ、cssひとつ、faviconひとつ)
  • 規模としては小さく、サーバ構成は1台のみ

といった時です。 こうしたケースにおいては、Amazon の S3 を静的コンテンツをサーブするサーバとして活用し、 サーバ内では mod_perl な apache 1台のみを動かすという方法が簡単でよいです。 自分は、debian を使っているので、apt-get でインストールした apache2 を

# /etc/init.d/apache2 start

と付属しているスクリプトだけで動かせるので、これも利点です。 S3 でサーブする時に気になるのはコンテンツのヘッダの設定ですが、 GUI のクライアントでは「Fire Bucket」や「S3HUB」といったものを使えば、 Expires ヘッダなどを設定でき、閲覧者のブラウザにコンテンツをキャッシュさせることができます。 Fire Bucket の場合は Expires の文字列を手動でいれなくては行けないので、 以下のようなスクリプトで 10年後の日付を出力させてコピペしてます。

#!/usr/bin/perl
use strict;
use warnings;
use HTTP::Date;

my $ten_years_sec = 10 * 365 * 24 * 60 * 60;
my $string = time2str( time() + $ten_years_sec );
print $string . "\n";

また、S3HUB ではもっと簡単に指定できて、 「Expires ( Far Future ) 」という項目がすでにありますので、これを選べば OK です。 S3HUB は今日から使い始めているのですが、動作も軽快でなかなかよさげです。

s3hub

さらに、 Amazon Cloud Front を使えばもっと効率的かつ低コストにコンテンツを配信できると思います。 S3 をこうして利用するのは、 小規模サービスでかつ静的コンテンツが少ない場合には有効な手ではないでしょうかね。

参考文献

Amazon EC2/S3クラウド入門
posted with yusukebe.com::AmazonSearch on 2009.7.8
  • 学びing
  • 単行本 / 秀和システム
  • Amazon 売り上げランキング: 40064
  • Amazon おすすめ度の平均: 3.5
    • 2 入門書です
    • 4 Amazonを使ってクラウドビジネスを始めたいと思う人におすすめ
    • 3 情報収集が面倒な方にはちょうどよいです
    • 5 すぐに試したい人におすすめ
    • 4 先進ユーザーによる実例本
Amazon.co.jpで詳細を見る