ソーシャルゲームの負荷対策のため、WordPressを静的化しサーバーレス化

アクセスが多くサーバーダウンが発生してしまうWordPressを、落ちないWordPressとすべく、静的化構成とした成功事例をご紹介します。

概要

  • ソーシャルゲームの利用者数が順調に増加したことで、WordPressで作成したページの応答が遅くなり、サーバーダウンが発生していた
  • WordPressを静的ページ化することで、ゲームのイベント時も安定して高速表示ができるようになった
  • インターネット公開サイトをCloudFront+S3とサーバーレス構成にしました

改善前の構成

リリース当時は国内サーバー事業者の物理サーバーを使用していました。

ゲーム内で最新情報を伝える必要があり、CMSとしてWordPressを利用していました。WordPressはアクセスがあるごとにPHPのプログラムが動くため、大量のアクセスなどにはしっかり準備をする必要があります。

改善後の構成

今回はゲームのイベント時の同時アクセスにも耐えられる構成を構築する必要がありました。

既にサーバーダウンも発生している状況のため、今からWordPressを他のCMSにする時間もありません。いくつか構成として取りうる選択肢がありましたが、安価にWordPressの利便性を落とさず対応可能な方法としてWordPressの静的化構成を選択しました。

構成解説

EC2へ管理用WordPressを構築

コンテンツ管理用のWordPressをEC2で構築します。このWordPressへアクセスするのは、サイト管理者のみです。WordPressサイトを静的ページに変換するプラグインを導入し、サイトをhtmlファイルとして出力しています。その後、Amazon S3へ転送します。

S3ホスティング

S3はAWSの提供する99.999999999%の耐久性を持つ非常に堅牢なストレージです。プログラムを実行することはできませんが、HTMLファイルやjavascript、画像などの静的なファイルを置き、Webサーバーとして利用できます。どんなに大量のアクセスが来てもほぼ落ちないとないのがウリです。

EC2で作成したサイトのHTMLファイルなどを置くことでWebに公開できます。ただし、S3上のファイルはhttpsではアクセスできず、httpでの接続になります。

CloudFrontでSSL対応

Amazon CloudFrontはコンテンツを高速配信するためのCDN(Content Delivery Network)サービスです。世界のどこからアクセスしても、最寄りのサーバーが応答することで高速なアクセスが可能です。今回は高速配信の恩恵もありますが、主にSSL対応をすることを目的に採用しています。

構築後の効果

静的化したWordPressのサーバーレス構成では次のようなメリットがあります。

サーバーダウンがなくなった

WordPressを静的化し、サーバーレス構成とすることでサーバーダウンがなくなりました。もちろん、Webサイトの応答も高速になり安定稼働しています。ソーシャルゲームユーザーにストレスなくご利用いただくことで継続率も高まるものと考えています。

セキュリティの向上

ユーザーがインターネットからアクセス可能なシステムはCloudFrontとS3のみです。いずれもOS領域にアクセスすることができないマネージドサービスのため、セキュリティ面でとても強固になりました。唯一、WordPressの管理目的で利用しているEC2インスタンスもIP制限を行うことで外部からの攻撃を受けることはありません。

WordPressの脆弱性対策

上記と関連しますが、WordPressを広くインターネット上へ公開しない構成のため日々発生するWordPressのセキュリティ対応に追われることがありません。じっくりアップデートの検証を行った後に、本番環境へ反映を行う運用が可能となります。

おわりに

今回はソーシャルゲームの最新情報を伝えるためのWordPressを静的化し、サーバーレス構成に変更した事例をお伝えしました。WordPressは様々なプラグインが提供されているため、静的化して良いケースとしてはいけないケースが存在します。場合によっては、サーバースペックを上げるだけで済むケースやWebサーバーを負荷状況に合わせて増やす構成なども考えられます。

ユーザーへ提供したい要件を正しく把握した上で、適切なクラウド構成とすることでスピーディーにコストを抑えて実現することができた事例です。