
サーバーレス構成コンテンツ側のしくみ
前提として「1枚の静的ページにメールアドレス登録フォームのみ置いたシンプルなキャンペーンサイト」を構築することを例に話を進めます。
よくあるゲーム事前登録サイトのイメージ
コンテンツ表示の流れとAWSサービスの概要
上図でクローズアップしたコンテンツ側は、以下ような流れになっています。

CloudFront
Amazon CloudFront はコンテンツを高速配信するためのサービス(CDN)です。 サイト訪問者へ最寄りのリージョンにキャッシュされているコンテンツを配信します。 AWSは国ごとのリージョンがあり、国内のリージョンが方が表示速度で有利ですが、CloudFrontを使うことで海外からのアクセスがあった場合に最寄りのリージョンにキャッシュさせるため、リージョンによる不利が無くなります。 CloudFront を使わずに S3 のみでもコンテンツ配信はできますが、S3 のみでは独自ドメインにSSL(https)が使えません。 今回の例は多数の人にメールアドレスを登録してもらうキャンペーンサイトなので、SSLを利用するため CloudFront を利用しています。
S3
Amazon S3 はスケーラブルなストレージサービスです。 S3 は静的ファイルのホスティングができ「落ちない」ことが強みです。しかし S3 のみではプログラムの実行ができません。そのため動的な処理は EC2 や Lambda に投げる形になります。
EC2
Amazon EC2 はスケーラブルなクラウドサーバーです。 今回の構成での役割は S3 にコンテンツを生成するためのCMSを実行するサーバーになります。「サーバーレス構成なのにサーバーがあるぞ」とツッコミを頂きそうですが、VPCによって公開ネットワーク側に出しておらず、サイトの訪問者はアクセスできません。 今回の構成例ではCMSを使う想定のためEC2を使っていますが、CMSを使わずにS3の静的ファイルを直接更新すれば外すこともできます。CloudFrontの効果を測る
「最寄りのリージョンにキャッシュして高速配信する」と謳う CloudFront ですが、実際どの程度効果があるのか調べてみました。計測条件
- 東京リージョンのS3に設置した、3MBの画像が置かれたHTMLページの表示速度を計測する
- CloudFrontのキャッシュの効果を見るため、キャッシュの有無で計測
- 「最寄りのリージョンにキャッシュする」効果を見るため、国内からと北米からのアクセスで計測
- 利用する計測サービス:http://www.webpagetest.org (回線速度を10Mbpsに設定)
表示速度の計測結果
経路 | キャッシュなし | キャッシュあり |
---|---|---|
東京リージョンへ国内からアクセス | 3.326s 3.594s 3.149s | 0.516s 0.492s 0.579s |
東京リージョンへ北米からアクセス | 6.014s 6.920s 6.014s | 0.434s 0.464s 0.355s |
CloudFrontの料金
効果がはっきり出たので、次に気になるのは CloudFront の料金です。 上記はAWS公式の料金表ですが、複雑な課金形態をしているので多少計算が必要です。 S3 のみ使った場合と CloudFront も使った場合の料金差を見るため、PVを基準に両者の月額を試算しました。PV (転送量/リクエスト数) | S3のみ | S3 + CloudFront |
---|---|---|
300,000PV (600GB/3,000,000req) | $85.1 | $87.6 |
1,000,000PV (2TB/10,000,000req) | $283.7 | $292 |
※1PV2MBの転送量、1PV10リクエストと想定。実際は増減するため高めの試算をしています。 ※CloudFrontのキャッシュ更新は月1回を想定。転送量とリクエストはCloudFrontがほぼすべて持つと想定。
AWSにかかる費用だけを見ると実はあまり差がありません。 この程度の差ならCloudFrontをぜひ使いたいと思いますが、CloudFrontはキャッシュを使うことで高速表示を実現しているため、このキャッシュをコントロールするため仕組みの構築や運用が発生しますので、その分のコストも加わります。