S3とCloudFrontで、WordPressを静的サイト配信

ディーネットのコーポレートサイトは、WordPressを使って静的サイト配信をしています。AWSを活用しながら静的サイト配信をすることで、コストやセキュリティなど様々なメリットがあります。

この記事では、静的サイト配信で受けることができるメリットと、AWSを活用した配信構成についてご紹介します。

WordPressのデメリット

WordPressのデメリットには、次のようなものがあります。

  • ポピュラーであるがゆえに、セキュリティリスクが高い
  • 動的にページ表示させるため、表示が遅い(ある程度のサーバースペックが必要)
  • インフラ管理が必要
WordPressのデメリット WordPress
セキュリティリスク ×
表示速度 ×
インフラ管理 ×

ポピュラーであるがゆえに、セキュリティリスクが高い

ご存じの通り、WordPressは世界で最も利用されているCMSです。

有名であるがゆえのデメリットがあります。攻撃対象になりやすいことです。攻撃者の視点から考えると、一つの脆弱性を見つけることができれば、より多くのサイトを攻撃することができます。

サイト運営者は、脆弱性対策をするために定期的なバージョンアップをする必要があります。実際に運用してみるとわかりますが、バージョンアップには多くの工数がかかります。時には動かなくなり、改修が必要になることもあります。

動的にページ表示させるため、表示が遅い(ある程度のサーバースペックが必要)

WordPressは、記事の追加や修正、デザインの変更をすると、即時反映されます。毎回、phpを動作させて、動的にページ表示させることで実現しています。

利便性が上がる半面、表示速度が遅くなるというデメリットもあります。単純にhtmlを取得する場合と、プログラムを動作させる場合を比較すると10倍以上の速度差が発生します。

速度差以外にも、必要なサーバースペックも大きく異なります。アクセスが少ないうちは問題になりません。月間数十万PV、数百万PVと増えていくと、必要なサーバー台数が2台、3台と徐々に増えていきます。

インフラ管理が必要

サーバーが必要になるということは、サーバーの管理が必要になります。インフラ管理には、専門の知識が必要になります。

レンタルサーバーで収まる程度のアクセス数であれば気にする必要はありません。アクセスが増えてくるとレンタルサーバーでは対応しきれなくなります。そうなると、パブリッククラウドの利用を検討するなどの対応が必要になります。

静的サイト化するメリット

まずは、単純に静的サイト化するメリットをご紹介します。

WordPressのデメリット WordPress 静的サイト化
セキュリティリスク ×
表示速度 ×
インフラ管理 × ×

セキュリティリスクが下がる

静的サイト化をすることで、プログラムを動作させる必要がなくなります。そのため、WordPress固有のセキュリティリスクを減らすことが可能です。

ただし、WEBサーバー自体のセキュリティリスクは残ります。

表示が早くなる(低サーバースペックで動作する)

プログラムの動作が必要なくなるので、表示速度が速くなります。サーバースペックについても、低スペックで動作可能になります。

ただし、大量にアクセスが発生すると、回線がボトルネックになる可能性があります。

静的サイト化+AWS活用をするメリット

静的サイト化に加えて、AWSを活用してみます。コンテンツをAmazon S3へ設置し、Amazon CloudFrontで配信する形をとります。

WordPressのデメリット WordPress 静的サイト化 静的サイト化+AWS活用
セキュリティリスク ×
表示速度 ×
インフラ管理 × ×

セキュリティリスクが大幅に下がる

EC2インスタンスを利用する場合は、ミドルウェア設定など利用者の責任範囲が大きく残ります。この構成では、エンドユーザーが閲覧する構成にはEC2インスタンスは含まれません。

Amazon CloudFrontとAmazon S3を利用して配信することで、セキュリティの責任範囲を大幅に減らし、リスクを下げることが可能です。

表示が早くなり、アクセス集中にも対応できる

Amazon CloudFrontを利用することで、コンテンツ配信の最適化が可能です。

コンテンツは、全世界に分散設置されているエッジサーバへキャッシュされます。利用者最寄のエッジサーバーに、キャッシュが存在する場合は、そこからキャッシュが返却されます。

そのため、距離による速度遅延が大幅に低減されます。もちろん、日本国内だけでなく、世界各国を対象として配信することも可能です。

また、コンテンツ配信に最適化されているため、LINEプッシュ通知やテレビなどのメディア露出による突発的なアクセス集中にも対応できます。

インフラ管理が不要になる

ユーザーへ配信する構成は、サーバーレスな構成となります。そのため、インフラ管理が不要となります。

WordPressを動かすEC2インスタンスは残りますが、利用対象は管理者のみです。ベストエフォートのインフラ管理で問題ありません。

静的サイト配信の構成

具体的な配信構成は次のようになっています。

WordPress管理用のEC2インスタンス

Amazon EC2上でWordPressを動作させています。通常のWordPressと同じ要領で問題ありません。

唯一異なるのは、セキュリティグループの設定です。管理者のみアクセスできるようにします。

静的コンテンツ出力プラグインで、Amazon S3へ出力

WordPressのプラグインを使って、静的サイトの出力を行っています。

代表的なプラグインとして「Static Press」と「Static Press S3」があります。この二つを利用することで、静的サイトを指定したS3のバケットへ自動出力することが可能です。

S3をオリジンとした、Amazon CloudFrontでコンテンツ配信

バケットへ出力されたコンテンツは、CloudFrontを経由して配信されています。

Amazon S3単体でも配信は可能です。しかし、独自ドメインのSSLに対応していません。

CloudFrontを利用することで、独自ドメインのhttps配信が可能になります。同時に負荷対策もできるので、CloudFront経由で配信することをおススメしています。

WordPressの静的サイト化の注意点

WordPressの静的サイト化をすると、当然のことながらプログラムが動作しなくなります。意外な落とし穴もあるので注意してください。

ランキングプラグイン

よく使うプラグインにランキングプラグインがあります。記事へのアクセス数を集計して、よく見られているページをリコメンドする機能です。

このアクセス数集計は、ページが表示されたタイミングで、WordPressへajaxのリクエストを送ることで集計されています。phpを動作させる必要があるので、完全に静的サイト化してしまった場合に動作しなくなります。

サイト内検索

WordPress標準のサイト内検索も同様です。サイト内検索をするためには、phpを動作させる必要があります。そのため、サイト内検索ができなくなります。

対処方法としては、「Googleカスタム検索」を使う方法があります。カスタム検索を使うことで、サイト内検索をGoogle側で処理することが可能です。

一部分だけ動的に動かしたい場合は

エントリーフォームなど、一部分だけ動的に動かしたい場合があります。その場合は、CloudFrontで複数のオリジンを扱えるように設定を変更しましょう。

たとえば、「/contact/」だけはEC2インスタンスで動作させ、それ以外はS3から配信する。というようなことが可能です。

その場合は、EC2インスタンスのインフラ管理が必要になってしまうので注意が必要です。

まとめ

WordPressで作成されたコーポレートサイトを、AWSを活用しながら静的サイト配信している事例をご紹介しました。

コーポレートサイトなどは、動的な変更が不要なサイトが多いのではないでしょうか。WordPressは便利な反面、多くのデメリットも発生します。そのほとんどは、動的に動作することによるものです。

AWSを活用し、静的サイト化することで、WordPressのメリットを活かしつつ、デメリットを解消することが可能です。

是非一度検討してみてはいかがでしょうか。