概要
Amazon EC2にWebサーバーを配置し、Amazon RDSにMySQLを配置したWordPress環境を、WordPress専用のホスティングサービスKinstaに移行し、性能を保ったままコストを削減しました。
目的
WordPressを使ったWebサイトを運営していましたが、Amazon EC2とAmazon RDSを使った構成となっており、ステージング環境も含めるとそれなりに費用が発生していました。WordPressは世界的にも利用されており、特化した安価なホスティングサービスも多いため、移行することでコストの最適化を目指しました。
実施作業
- 移行後の費用を試算
- 移行することで現状のインフラ費用がどの程度まで減らせるのかを試算しました。
- Kinstaの調査
- OSレベルから設定を調整可能な旧アーキテクチャーと比較するとかなり制限がかかることになるので、現状の要件のうち満たせないものが出てこないかを確認しました。
- 独自開発のテーマの修正
- 発注主企業様で独自に開発していたWordPressテーマは、PHPのインクルードパスの調整を前提とした実装となっていたため、それらが調整できないKinsta環境でも動作するように修正を行いました。
- メディアファイルの管理体制の移行体制を設計・構築
- 旧アーキテクチャーでは、Nephila Clavataプラグインを使って画像をAmazon S3バケットにコピーしていましたが、EC2のEBSにもファイルが残るため、Webサーバーのストレージ容量が多く必要となっていました。移行先の候補となるKinstaのプランではストレージは数十GBまでと比較的少なめだったので、画像は全てAmazon S3上に配置するためにWP Offload Mediaプラグインを使ってオフロードする構成にしました。
- WP Offload Mediaプラグインが作成する
wp_as3cf_items
テーブルの構造についても調査し、必要なデータを作成するスクリプトを作成しました。
- Kinstaの契約
- Kinstaの初期設定
- メディアを格納・配信する系統の構築
- メディアを格納するためのAmazon S3バケットと、S3バケット上のコンテンツをキャッシュして高速に配信するためのAmazon CloudFrontディストリビューションを構築しました。
- リソースの管理にはAWS CDK(TypeScript)を使い、GitHub ActionsでCI/CDパイプラインを構築しました。
- プラグインのインストール
- Kinsta環境のWordPressに、必要なプラグインをセットアップしました。
- 効率化のため、WP CLIを使って操作を行いました。
- データの移行
- Amazon EC2のEBS上にある画像ファイルを、新たに構築したS3バケットに転送しました。
- Amazon RDS上のMySQLのデータをKinsta上のMariaDBに転送しました。
- 系統の切り替え
- 新系統が正しく動作していることを確認した上で、DNSの切り替えを行い、ユーザーからのリクエストを新系統に流すようにすることで移行結果を公開しました。
- 旧系統の削除
- 予期しない不具合に備えて一定期間旧系統を維持した上で、旧系統のリソースを完全削除しました。
システムの構成
変更前のアーキテクチャー
クリックして拡大表示タップして拡大表示
変更後のアーキテクチャー
クリックして拡大表示タップして拡大表示
コスト削減結果
当時の為替レートでの計算で、約75.8%の費用削減に成功しました。
旧アーキテクチャーではEC2・RDSのリザーブドインスタンスを利用してコスト削減した上でこの価格でした。
| 月額 | 削減率 |
---|
旧アーキテクチャー | ¥30,851 | - |
新アーキテクチャー | ¥7,780 | 75.8% |
所感
リソースを起動している時間で課金されるEC2, RDSのようなリソースがある構成だと、ステージング環境を作る分コストが約2倍に増えます。Kinstaでは、ステージング環境は費用に含まれているので、EC2・RDS相当のコストが丸々かからないことになり、コスト面の効率が良くなります。
また、OSやELBなどのリソースを自社で管理する必要がなくなるので、人為的ミスの発生可能性やセキュリティ面の対策の工数を減らすことができます。
WordPressをホストできるサービスは沢山あり、特性も異なるので、要件に応じてうまく活用できればかなりコスト削減ができると考えています。