WordPressをAWSで構築する時にどうすればいいか考えてみた
最近プライベートでWordPressをAWSで立ち上げることがあったが、
- 「どんなサービスを使えばいいか」
- 「どんな構成にすればいいか」
- 「どんな感じで料金がかかるのか」
などわからないことが多かったのでここでまとめてみた。
大前提として抑えておくべき用語
このページのリージョンとアベイラリティゾーンだけでも抑えておいた方がよいなと。。。
リージョン
クラウドが提供される地域、日本でつかうなら、東京リージョンを選んだり、アメリカで使うならオレゴンやバージニアのリージョンを選ぶとその地域の筐体が使える。
アベイラリティゾーン
よくAZと言われる。リージョン内のデータセンターを物理的に分けたもの。データセンターが一箇所しかないと、津波被害とかが起こった際に全てがパーになる。それを未然に防ぐためにリージョン内に何個も分けてAZを用意している。
WordPressを立ち上げる際に必要なサービス
マストで必要なサービス
・EC2 (t2micro)
・EBS(EC2用のストレージ)
・VPC
・Route53
マストな各サービスの説明
EC2(今回はt2microを使用)
↓正式な説明はここにあるのでよくご覧いただきたい
ざっくりいうとスケーラブルなサーバー。インスタンスタイプという名称で自身の環境にあったスペックを選べる。いろんな文献を読んでいるとt2.microを使うみたいなので今回はそれを使用。
EBS
↓正式な説明はここにあるのでよくご覧いただきたい
EC2のストレージ、EC2用のストレージは他にもインスタンスストアが
t2.microを選ぶと自動的にEBSになってしまうので、今回はこれを選ぶ。
VPC
↓正式な説明はここにあるのでよくご覧いただきたい
リージョン内の仮想的なネットワークぐらいにイメージを持っておくと良いかもしれません。VPCで抑えておくべきは、「サブネット」、ファイアーウォール機能である「セキュリティグループ」・「ネットワークACL」。
サブネット
VPC内をさらに小さなネットワークに分けられる機能です。ただし、サブネットはAZ内にのみ作れる。AZをまたいだサブネットを作れない。サブネットはその性質から、プライベートサブネット、パブリックサブネットに分けられる。
- プライベートサブネット
インターネットにアクセスできないネットワーク - パブリックサブネット
インターネットにアクセスできるネットワーク。サブネットにインターネット接続ができる「インターネットゲートウェイ(IGW)」をアタッチし、ルートテーブル(ルーティングを決める機能)でデフォルトゲートウェイ(送信先:0.0.0.0/0)にIGWを設定したもの。 - セキュリティグループ
インスタンスごとに設定できるファイアーウォール。インバウンドでは送信元のIPやアクセスを受け付けるポート番号を指定でき、アウトバンウンドでは送信先のIPやアクセス先のポート番号などを指定できる。
ステートフルなので、たとえアウトバンドしか許可していないパケットの戻りも受け付ける。 - ネットワークACL
サブネット単位で設定できるファイアーウォール。インバウンドでは送信元のIPやアクセスを受け付けるポート番号を指定でき、アウトバンウンドでは送信先のIPやアクセス先のポート番号などを指定できる。
ステートレスなので、たとえアウトバンドしか許可していないパケットの戻りも受け付けない。
Route53
↓正式な説明はここにあるのでよくご覧いただきたい
要はDNS、スケーラブルなDNS。ドメインの申請とかもできるらしい。
本格的にやるなら手をつけたいサービス
・RDS
・S3
・CloudFront
本格的にやるなら手をつけたいサービスの説明
RDS
↓正式な説明はここにあるのでよくご覧いただきたい
フルマネージドなデータベースサービス。物理層やミドルウェア層とかをあんまり気にしなくていい。
以下の項目が自動でやってくれる
- 最新パッチの適用
- バックアップ
- ホストの交換
さらに、Multi-AZという機能を使うとスタンバイインスタンスを別のAZに用意してくれる。
S3
↓正式な説明はここにあるのでよくご覧いただきたい
99.999999999% の耐久性を持っているストレージ。URLベースでファイルを公開できる機能もある。多くのAWSがS3との連携機能を持っているので
CloudFront
↓正式な説明はここにあるのでよくご覧いただきたい
注意
今回は・・・ELBを使わない理由
今回プライベートでやっているかつ本格っぽくいろんなサービスを使いたいという希望があったので、ELBは使っていません。ELB使うとEC2を何個か持たないといけなくなるのでそんな余裕がなかったということです。
本当はELBをつかって冗長構成をとった方がいいと思う。
WordPressの構築パターン
EC2・Route53のみの場合
メリット:
- AWS MarketPlaceにあるソフトウェアを使って構築が楽
- 安価で運用できる
デメリット:
いろんなサービスを使う場合
メリット:
- 本格的なAWSの"活用感"ある
- MySQLのアプデとか面倒をみなくて済む
- DBに関してはバックアップも自動
- DBがインターネットから直接さわれずセキュリティが良い
- CDNを使うので静的ファイルの送信とかはやくなるんじゃないかな
デメリット:
- 若干値がはる
- AWSの勉強は現行のものより結構必要
どうやって料金はかかるのか?
基本的には一つずつ料金シュミレーターにぶっこんでやると料金がわかるので色々試した方がいい。料金算出は2017年11月26日時点
各サービスにかかる料金の算出はこちら。
EC2
- インスタンスを持っている代
インスタンスタイプによって料金は変わる
t2.microだと$0.0152 /時間
※OSはLinux - EBSの代金
汎用 SSD (gp2) ボリュームだと想定して 月 $0.12/GB - EC2からインターネットへのデータ流量の代金
データ受信:
・インターネットからのデータ受信は無料
・パブリックやElasticIPを使う場合は$0.01/GB
・別のアベイラリティゾーンやピア接続した場合も$0.01/GBかかるらしい
データ送信:
・インターネットへの送信
最初の1GBは無料
10TBまで 月 $0.14/GB
・CloudFrontへの送信
$0
Route53
- ホストゾーンごと 月$0.5
- クエリ数
10億クエリまで 月$0.400/100万クエリ
RDS
- インスタンス料金
MySQLかつdb.t2.miroの場合 $0.026/時間 - ストレージの容量汎用(SSD)ストレージの場合
月 $0.138/GB - RDSからインターネットへのデータ流量の代金
データ受信:
・インターネットからのデータ受信は無料
データ送信:
・インターネットへの送信
最初の1GBは無料
9.999TBまで 月 $0.14/GB
・CloudFrontへの送信
$0
S3
- ストレージの容量
50TBまで月 $0.025/GB - S3からインターネットへのデータ流量の代金
データ受信:
・インターネットからのデータ受信は無料
データ送信:
・インターネットへの送信
最初の1GBまでは無料
10TBまで月 $0.14/GB
・CloudFrontへの送信
$0 - リクエスト料金
・PUT、COPY、POST、または LIST リクエスト $0.0047/1,000 リクエスト
・GET および他のすべてのリクエスト $0.0037/10,000 リクエスト
CloudFront
- CloudFrontからインターネットへのデータ流量の代金
10TBまで月 $0.140/GB
想定している構成の料金は・・・
※はサイイン後12ヶ月無料
EC2・Route53のみの場合
- EC2: 11.13$(t2.micro) ※
- EC2(IP利用分)のデータIn: 0.1$(10GB想定)
- EC2(IP利用分)のデータOut: 1.4$(10GB想定)
- EBS:0.60$(5GB想定)
- Route53:0.5$
- Route53:0.4$(10万クエリ想定)
合計:月 14.13$
いろんなサービスを使う場合
- EC2: 11.13$(t2.micro) ※
- EBS:0.60$(5GB想定)
- Route53:0.5$
- Route53:0.4$(10万クエリ想定)
- RDS:19.73$(db.t2.micro 5GB)※
- S3:0.125$
リクエスト料金は小さいので無視 - CloudFront:$1.4(10GB想定)
合計:月 33.885$