フィギュア販売メーカーによるアニメメディアサイトの構築事例を紹介します。サイトはCMSにDrupalを用いました。リリース時にキャンペーン企画を行う想定をしており、負荷対策を検討しつつ構築しました。
概要
- アニメに関するメディアサイトを新規構築
- CMSにDrupalを採用
- 不定期に企画記事の制作を行い多数のアクセスが見込まれる
- リリース時、DBは冗長化しWebサーバーはスペックアップで対応することに決定
構成
Drupalは動的なCMSのためEC2を利用します。データベースは障害に備えるためMulti-AZ構成として冗長化しました。
このプロジェクトでは、不定期にキャンペーンを行う予定をしておりアクセスの増加が見込まれていました。そこで、キャンペーン時にはEC2インスタンスのスペックアップにより対応する計画を立てました。
開発環境はEC2へDrupalとMySQLをインストールした1台構成です。ここはコストを抑えています。
構成解説
ELB(ロードバランサ)
インターネットからのアクセスをELB(Elastic Load Balancing)でEC2インスタンス(Webサーバー)へ振り分けます。Webサーバーが1台構成ですが、想定以上のアクセスがあった際にすぐにWebサーバーのスケールアウトもできるよう、あらかじめ配置しました。
また、1台構成でもWebサイトのデプロイやセキュリティアップデート時などに、サービスを停止をせずにEC2インスタンスの入れ替えができるメリットもあります。多少のダウンタイムを受け入れてコストメリットを優先する際は、Floating IPパターンというEIPの付け替えによる切り替え方法も有効です。
EC2
DrupalをインストールしたWebサーバー1台の構成です。Drupal自体は冗長化構成に標準で対応したソフトウェアではありません。同期処理を実装する必要があったため、リリース時点ではWebサーバー1台構成としました。 キャンペーンでアクセス数が増加する見込みがある際は、サーバーのスペックアップを行うことで対応しました。
RDS マルチAZ
データベースはRDSでMySQLを用意し、マルチAZ構成としています。通常時はWebサーバーはマスターサーバーとのみやり取りをします。マスタサーバーの内容は自動的にスレーブサーバーに書き込まれます。自前でマスタースレーブ構成を構築し、運用するのはひと手間かかりますので、RDSのメリットを存分に活用しています。
構築の効果
上記構成のDrupalには次のようなメリットがあります。
柔軟なスペック増強
メディアサイトの成長は予測ができない部分があります。急激なメディアの成長時でも、容易にEC2を追加するだけで増強可能な構成としました。計画したアクセス増加時はスケールアップ、急激な成長時はスケールアウトにより対応をします。
ダウンタイムのないメンテナンス
コンシューマー向けのメディアサイトのため、ユーザーにはストレスなく閲覧していただける環境を優先しました。ELBを配置することでサービスのダウンタイムがなく、EC2マシンの入れ替えを可能としました。スペックアップやメンテナンスも特に時間帯を気にすることなく実施できます。
コスト削減
1,000万PV以上のアクセスを目指せるサイトとして構築したDrupalサイトですが、はじめから1,000万PVを見込んだ構成を構築すると、維持コストが大きくなります。柔軟に増強可能な構成とすることで、初期コストを抑えられました。
おわりに
EC2+RDSとスタンダードな構成を採用しましたが、検討時点ではEC2を2台+RDS(マルチAZ)構成やEC2だけ1台にDBを詰め込むプランなど3パターンを検討しました。
EC2を2台+RDS(マルチAZ)構成は突発的なアクセス増加にも対応可能な安定性があります。一方で、Drupalの冗長化に多少時間が必要になること、維持費用が高くなってしまう懸念もありました。
EC2だけ1台構成はコストを圧倒的に抑えられるものの、アクセス増加時の対応に他のパターンよりも時間がかかってしまうことが課題でした。
まずはユーザーを第一に考え、ローンチ時にできる限りサーバーダウンなどでストレスを与えることがないようにしつつも、コストも考慮し構成を決定した事例でした。