Amazon Aurora Serverless を WordPress で使ってみた

Amazon Aurora Serverless とは

Amazon Aurora Serverless は、フルマネージドなRDBMSである Amazon Aurora に自動スケール機能が付いたものです。詳しくは公式のページを。

Amazon Aurora Serverless の疑問点

自動スケールするのはいいけど、無負荷時に停止しちゃうなら24時間稼働してるシステムには使えないですよね。このブログみたいに「ずーっと低負荷だけど、たまにくるアクセスはちゃんと捌きたい」みたいな要求には合わないのか?そういう残念なWordPressサイトは世の中に結構あると思いますが、そんな場合でも安定したDBを安く使えたら嬉しいですね。

よくわからないので、実際に試してみます。

結論: Amazon Aurora Serverlessは、別に格安ということはない

  • 24時間稼働してるシステムには使えないのか? → 使えるが、インスタンスが完全に停止すると復帰するのに数十秒かかる。停止しないように設定することもできるので、それなら問題なく使える。
  • ずーっと低負荷だけど、たまにくるアクセスはちゃんと捌きたい → 停止から復帰する際に数十秒かかるので、それでもいいならピッタリ。
  • 普通のAuroraと比べて安いのか? → 多少は安く上がるかも知れないが、極端に安くはない。ACUの使用料はある時にまとめて請求書に載ってくるので、それが来るまでは異常に安く見える。
  • 普通のAuroraと比べて料金以外メリットは? → 自動スケールするところ

というわけで、公式が想定している通り、「たまにやる重いバッチ処理」とか「たまに実験で使う」とか「日中(限られた時間帯)だけ使う」データベースとして使うと、手間もなくコストメリットが大きそうです。

Amazon Aurora Serverless を実際に起動してみる


Aurora Serverlessは、MySQL 5.6互換でしか使えないようです。


ここで「Serverless」を選択。


どうやら “数分間アイドル状態のままの場合コンピューティング性能を一時停止する” のチェックを外せば稼働状態は維持できそうです。が、とりあえずデフォルトの5分のまま作ってみます。

Amazon Aurora ServerlessにMySQLクライアントで接続してみる

Auroraを使うのが初めてだったので「接続先ホストどれやねん!」ってなりました。よくよく見てみると詳細ページ(RDS → クラスター)の “Database endpoint” に書いてありました。ページ内検索した方が良さそうですね。

この環境ではDockerを使っているのでこれで接続できます。

$ docker run --rm -it mariadb mysql -h xxxxxxxxx.cluster-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -u user -p**********

接続先ホストを探すのに手間取ったので、その間にデータベースインスタンスはシャットダウンされてましたが、コマンドを実行してから25秒くらいで接続できました。実装がどうなっているのかわかりませんが、内部ではコンテナ的なインスタンスが起動されてるんですかね。

セキュリティグループはハマりどころなので、接続できない時には確認しましょう。

Amazon Aurora ServerlessにWordPressのデータを入れてみる

ふつうに入れられました。そんなにデータ多くない(gzippedで400KBくらい)ので、2秒くらいで完了。

zcat mysqldump-wpdb.dat.gz | docker run -i --rm mariadb mysql -h xxxxxxxxx.cluster-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -u user -p********** wpdb

Amazon Aurora Serverlessは本当に自動スケールするのか

AWS Consoleでログが見られるので見てみると、どうやらちゃんと自動スケールしているようです。インスタンスが増えたのは、上記のデータ投入の時かな?

Amazon Aurora ServerlessをWordPressで使うとどうなのか(引き続き試します)

現状、サクサク使えていますが、以下の疑問点がまだあるのでしばらく運用してみます。

  1. 5分間以上アクセスがないとインスタンスはシャットダウンされてしまうのか。(persistent connectionは使ってない)
  2. インスタンスがゼロになった時、正常にレスポンスを返せるのか。何かがタイムアウトしてしまうのか。
  3. 実際のところ、料金はいくらかかるのか。月額で知りたい。
  4. “スケーリングの追加設定” で、無負荷時でもシャットダウンを回避できるのか。(できると思うけど)

なお、 “スケーリングの追加設定” は、(当然ながら)インスタンス作成後でも変更可能でした。

2018-08-29追記: Amazon Aurora Serverlessを一晩動かした後の状況

一晩(約16時間)使って $0.05 でした。すべてが請求書に上がってくるまでは多少の時間差があると思われますが、非常にお安いですね。

Aurora Serverless 一晩使った後の料金

Aurora Serverless 一晩使った後の料金 (RDS MariaDBは別件で試した分)

データベースインスタンスの停止は、ちょくちょく発生しているようです。数秒から十数分以内でresumeしている模様。停止してから復帰する時のレスポンスタイムどうなってんのかな…

2018-09-13追記: ACU使用料が請求に載ってきた

やっとACUの使用料が載ってきました。タイミングがわからないけど、毎月10日くらいにまとめて請求データ作ってるのかな?

従って、Aurora Serverlessを「24時間稼働している普通のWordPressサイト」で使う場合、通常のAuroraと比較して極端に安いということはない、と言えます。ほとんどずっと動いてますからね。

DBキャパシティが自動スケールする点はメリットです。時間帯によって負荷が大きく変動する人気サイトなら、うまく活用できるかも知れません。

2018-09-20追加: WordPressで使うのをやめました

感想: たっけえ!

零細個人ブログに払う金額じゃないですな。