サーバーレスとは? AWS S3中心の「落ちないインフラ」の仕組みを解説! | クラウドアドバイザー | AWS構築運用会社
 

サーバーレスとは? AWS S3中心の「落ちないインフラ」の仕組みを解説!

前回の「サーバーレスとは? AWS Lambda中心の構成のメリットと仕組みを解説!」で、サーバーレス構成ご提供の背景とメリットと、従来のサーバー構成なら「サーバーサイド」にあたる処理側の仕組みについてご紹介しました。 今回は「フロントエンド」にあたるコンテンツ表示側の構成についてご紹介します。

サーバーレス構成コンテンツ側のしくみ

前提として「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の静的ファイルを直接更新すれば外すこともできます。
EC2からコンテンツをS3に出力し、S3のコンテンツをCloudFrontにキャッシュして配信する一本道の流れです。

CloudFrontの効果を測る

「最寄りのリージョンにキャッシュして高速配信する」と謳う CloudFront ですが、実際どの程度効果があるのか調べてみました。

計測条件

  • 東京リージョンのS3に設置した、3MBの画像が置かれたHTMLページの表示速度を計測する
  • CloudFrontのキャッシュの効果を見るため、キャッシュの有無で計測
  • 「最寄りのリージョンにキャッシュする」効果を見るため、国内からと北米からのアクセスで計測
  • 利用する計測サービス:http://www.webpagetest.org (回線速度を10Mbpsに設定)
以上の条件で3回ずつ計測しました。

表示速度の計測結果

経路 キャッシュなし キャッシュあり
東京リージョンへ国内からアクセス 3.326s 3.594s 3.149s 0.516s 0.492s 0.579s
東京リージョンへ北米からアクセス 6.014s 6.920s 6.014s 0.434s 0.464s 0.355s
こうかはばつぐんだ!」と言いたくなるほどの結果が出ました。 キャッシュなしでは明らかにリージョンの差が出ていますが、キャッシュありの時は北米の方が早くなったほどです。Amazon本拠地の北米の方がキャッシュサーバーの性能が良いのかもしれません。

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はキャッシュを使うことで高速表示を実現しているため、このキャッシュをコントロールするため仕組みの構築や運用が発生しますので、その分のコストも加わります。

さいごに

Lambda中心の処理側と、S3中心のコンテンツ側の2回に分けてサーバーレス構成の仕組みをご紹介しました。 「サーバーレスってどういうこと?」という疑問への回答にはなれましたでしょうか。 今回は例として「ゲームのキャンペーンサイト」を挙げていますが、「膨大なアクセス負荷をさばく」ことが目的ならば、採用サイトやチケット予約サイトなど用途は様々あります。 会員制動画配信サイトなど高度なWebサービスでもサーバーレス構成は採用されており、インフラに多大なコストがかかるものほどサーバーレス構成の効果は高くなる可能性もあり、サーバーレス技術への注目は高まっています。 このブログを通してサーバーレス構成のメリットなどが少しでも伝わりましたら幸いですが、ご不明な点やご質問などありましたらお気軽にお問い合わせください!