クラウドサーバー

クラウドでWordPressをやるならRDSよりもDockerがオススメ

クラウドでWordPressをやるなら、仮想インスタンス+RDSで構築するよりも、よDockerを使った方がコスパや構築の簡易さでオススメです。今回はその理由を見ていきます。

仮想インスタンス + DBサービスではダメなのか?

RDSの料金は高い

AWSのRDSで試算すると、スペックの低い「db.t3.micro(仮想2コア・1Gメモリ)」で10GBストレージの計算だと、月額費用はおよそ2,000円です。一方で、AWSのEC2の同条件のインスタンス(t3.micro)は月額1,200円程度で約40%安くなります。

RDSはデータベースサーバーとして最適化されているとのことですが、かつて筆者がパフォーマンス比較した際には、大きなパフォーマンス差はありませんでした。

RDSのメリットとしてはDBのマルチゾーン化ですが、WordPressサイトでマルチゾーンにする意義はほぼないと思われますので、わざわざ高いRDSでWordPressのベータベースを組む意味はありません。

仮想インスタンスでもレプリケーション・スケールは出来る

RDSのもう一つのメリットとして、データベースサーバーのレプリケーション・スケールは出来るという点があります。

それらの設定が管理画面から簡単に組めるのは大きなメリットですが、仕組みとしてはDockerのMySQLコンテナでも同じことが出来ます。Dockerでレプリケーションのためにクラスタを組むと複数台のサーバーが必要ですが、RDSのマルチゾーンも倍くらいの値段がするのでコスパは同等です。

また、WordPressくらいシンプルな構造で、DBサーバーのレプリケーションが必要な規模のサイトなのであれば、むしろページのキャッシュコントロールなど、DBとの通信を減らす努力をした方が効果的でしょう。

バックアップという意味では、自動バックアッププラグインもたくさんあるので、あえてDBのレプリケーションを用意するよりも、違う場所に定期的にバックアップをしっかり取っておいた方が安心です。

Dockerのメリット

構築が簡単

Docker自体の知識は必要ですが、Dockerであればコマンド一発でWordPressサーバーを立ち上げることが可能です。

任意のディレクトリに、下記の内容のdocker-compose.ymlを設置して、

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

コマンドを打てばすぐにWordPressサイトが立ち上がります。

docker-compose up -d

これだけです。簡単ですね。仮想インスタンス+RDSではこうは行きません。

最近のクラウドサーバーは、DockerがインストールされたOSイメージを配布しているので、Dockerのインストールさえ不要です。

インスタンスのカスタマイズが豊富

RDSの場合、インスタンスは規定の一覧から選ぶ形になりますが、仮想インスタンスの場合はメモリを増やしたり、vCPUを増やしたり、細かいカスタマイズが可能となります。

DockerでWordPressを動かす場合、ベースは仮想インスタンスですから、WordPressサイトの規模やアクセス数などによって、インスタンスを細かく調整できるということです。

パフォーマンスと予算の最適化という意味では、選択肢が広い方がより最適化がしやすくなります。

Dockerならオーケストレーションも可能

AWSならAmazon Elastic Kubernetes Service、やGoogle Cloud PlatformならGoogle Kubernetes Engineがあるため、それらを使ってDockerクラスタを簡単に組むことが出来ます。

そもそもWordPressサイトにクラスタは不要なことが多いですが、RDSなどと同じようなこともDockerを使えば簡単に出来ます。

他のサーバーでの再現性が高い = 移転も楽

RDSなどのサービス依存なサーバーを使っていると、ローカルや別のサーバーに全く同じ条件を組むことが出来ません。しかし、Dockerなら、コンテナイメージを引っ張ってくるだけで、本番環境と同じ条件をすぐに構築できます。

RDSを使っていると、万が一移転したいとなった時に、

  1. バックアップを取って
  2. 新しいサーバーにデータベースサーバーを構築して
  3. データを移して

とやる作業が多いですが、Dockerなら、DBなどのデータをコピーしてコンテナを立ち上げるだけで完了ですので、数分で終わります。


クラウドが流行し始めた頃、「EC2とRDSでWordPressサイトをクラウド化した!」という声が多く聞かれたため、WordPressをクラウドサーバーで構築する際にRDSを使う方もいるかと思いますが、コスパを考えたら、RDSを使うメリットはあまりません。

RDS自体は優れたサービスではありますが、大規模なサービスなどを構築するのに向いているサービスなので、WordPressのようなシンプルな構成の場合は、Dockerを使った方がコスパが高くなることを覚えておいてください。


価格は記載がある場合を除き、すべて税抜きです。

この記事の関連キーワード

クラウドサーバーの記事