[クラウド活用パターン辞典〜Amazon Web Servicesを使い倒す!〜]

AWSでECサイトを構築する【第3回】

2017年4月10日(月)清野 剛史(クラスメソッドAWS事業部ソリューションアーキテクト)

前回までにクラウドの「可用性の担保」や「負荷対策」を解説した。今回は、それらを元にして、「ECサイトの構築」をテーマにしたアーキテクチャーを実際に構築していきたい。

オートスケールにするか冗長構成にするか

 次に考えるべきはEC2の形態を(1)AutoScalingにするか、(2)単体のEC2を冗長的に偶数台配置するか、という選択だ。いずれにも利点と欠点がある。選択のポイントは「リクエストの増減が激しいかどうか」「サーバーがダウンした時の運用をどうするか」だろう。

 AutoScalingが有効なのは、リクエストが時間帯や曜日によって5倍や10倍も差があるといったサイトである。しかし、その増減度合いが急激な場合、例えば「木曜の夜9時から1時間、割引キャンペーンを実施するため必ず急激なアクセス増が見込まれる」といったケースでは、最初の数分間はAutoScalingがリクエスト増を検知してスケールアウトするのが追いつかず、毎週つながりにくい時間帯ができてしまう。その場合は単体EC2を配置し、手動またはスケジュールによってリクエスト増の20分前位に台数を増やしておくと良いだろう。

 サーバーがダウンした時は、バックアップしているAMIイメージを利用して新しいサーバーを立ち上げることになる。AutoScalingなら必要な台数(desired)に足りなければ自動でサーバーを立て直してくれる。クラウドの場合、OSより低いレベルの原因でサーバーがダウンした場合、その原因を探るのはAWSサポートと連携するなど骨の折れる作業になる。だがAutoScalingであれば「LifeCyclehook機能」を使うことで、サーバーがダウンした時に任意のコマンドを流せる。サーバーログなどをストレージサービスの「S3」に流しておけば障害探索の一助になるだろう。

CDNのCloudFrontを上手に使う

図2:CloudFrontを使ったシステムの負荷分散図2:CloudFrontを使ったシステムの負荷分散
拡大画像表示

 ECサイトを構築する際にはコンテンツ配信ネットワーク(CDN)「CloudFront」の役割が重要である。サイトの手前にCloudFrontを置くことで、キャッシュとしての機能のほか、エッジロケーションまでのネットワークが最適化され、動的な部分も速くなると期待できる。その他、画像や静的ファイルをS3に置き、Webサイトホスティングを有効にした上でCloudFrontのパスを分ければ、静的サーバーとして機能するためシステムの負荷分散が可能になる(図2)。

 またHTTPステータスコードによりエラーページに飛んだり、メンテナンスページをパスにマッピングすれば、コンテンツ単位にサービスを停止することもできる。運用を重ねると細かいアップデートや修正が出ることも多いが、CloudFrontを上手に活用すれば、サービスを止めることなく修正などが可能になる。

 CloudFrontは、サーバー証明書を発行する「ACM(Amazon Certificate Manager)」と連携できるため、サイト全体を簡単にSSL化できる。昨今のECサイトにおいてSSL化は必須といえる作業であると同時に、更新作業などのサイト運用では手間のかかる作業の1つでもある。それがCloudFrontを使うことで簡単になるのであれば使わない手はない。既存のシステム構築に一切影響を与えない点も魅力的だ。

 さらにCloudFrontは、クラウドセキュリティサービス「AWS WAF(Web Application Firewall)」をオプションで動かせる。ECサイトを安定運用するためには、外部からの攻撃をどのようにして防ぐかも大きなポイントになる。AWS WAFを導入することで、不正な攻撃に対し幅広くブロックできる。クラウドの特性を活かして、そのルールを動的に作成することもできる。

バックナンバー
クラウド活用パターン辞典〜Amazon Web Servicesを使い倒す!〜一覧へ
関連記事

Special

-PR-

AWSでECサイトを構築する【第3回】 [ 2/4 ] 前回までにクラウドの「可用性の担保」や「負荷対策」を解説した。今回は、それらを元にして、「ECサイトの構築」をテーマにしたアーキテクチャーを実際に構築していきたい。

PAGE TOP