突発的なアクセス増に耐えるサイトを構築する

突発的なアクセス増に耐えるサイトを構築する

複業のWeb制作では、さくらインターネットレンタルサーバーサービスを使用しています。

一般的にさくらインターネットに限らず、レンタルサーバーのサービスには一定以上のアクセスが集中すると、アクセス制限がかかるようになっています。レンタルサーバーの業者は、特定の契約者のアクセス増により他への影響が出ないよう、常に監視して必要なら制限をかけます。レンタルサーバー契約者全員に同じプランなら同じ価格で、公平なサービスを提供しなければならないので、仕方ないですね。

ダウンするとコンテンツ閲覧できないことも問題ですが、アクセス数のカウントやアクセス元の取得がダウンの間漏れてしまうことも問題です。

この記事を書いている理由も、あるイベントのWebでサイトがダウンする問題を解消したいからです。メディア紹介の影響で、想定を大幅に超えるアクセスがありました。

ELB+EC2でオートスケーリングする

ELBとCloudWatch Logsで、EC2をオートスケーリングすることもできますが、そもそもここまでの構成が必要なのかという疑問が湧いてきました。

f:id:TOSHIOSHIMO:20191104223652p:plain

Amazon CloudFrontを使う

aws.amazon.com

AWSにはコンテンツ配信サービス(CDN)として、Amazon CloudFrontというサービスがあります。オンプレミスの方にCDNとかいう概念って分かりづらいと思います。僕もこれが一体何なのかさっぱり分かりませんでした。

CloudFrontはコンテンツのキャッシュを行うサービスです。世界中のエッジロケーションと呼ばれる場所に設置されていて、アクセス元から一番近いCloudFrontが使われます。CloudFrontは、それ自身にキャッシュされた結果があればそれをアクセス元に返す、キャッシュされた結果が無ければオリジンサーバー(この場合はEC2)にコンテンツを取得しに行き、その結果を返す働きをします。突発的なアクセス増にも、キャッシュ機能で対応できる訳です(EC2へのアクセスを最小限にできる)

独自ドメインSSL証明書も設定出来ますし、この仕組みで解決できるのでは?と思いました。

f:id:TOSHIOSHIMO:20191104224505p:plain

静的コンテンツならEC2が不要では?

CGIPHPなど動的なコンテンツが無い、静的なコンテンツならEC2すら不要で、S3バケット十分では?と思います。

successprog.com

別途EC2上のWordPressでサイトを制作し、プラグイン「Static Press」で静的サイト化して、S3に保存したコンテンツをCloudFront経由で配信すれば凄くシンプルな構成になります。更新するたびに静的サイト化する作業が発生しますが、一番低コストで済みそうです。

f:id:TOSHIOSHIMO:20191104225317p:plain

 

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)