社内でAuroraのサーバーレスというのが出たらしいというので触ってみました。
Auroraのサーバーレス?
ん?Auroraのサーバーレス?どういうことだ? よくわからなかったので、読んでみました。
これがAWSのニュース記事はこれ。
Aurora Serverless MySQL Generally Available | AWS News Blog
最初の方の文を抜き出してみると、インスタンスを意識しないで良いということだそうです。
You may have also heard of serverless, which allows you to build and run applications and services without thinking about instances.
簡単な構成図も説明と一緒に記載されています。
It creates an Aurora storage volume replicated across multiple AZs.
It creates an endpoint in your VPC for the application to connect to.
It configures a network load balancer (invisible to the customer) behind that endpoint.
It configures multi-tenant request routers to route database traffic to the underlying instances.
It provisions the initial minimum instance capacity.
でも、結局日本人なので日本語が一番理解できました。 インスタンスが自動でスケール・縮退・停止することから、
- システムリソースへの考慮が大幅に減ること
- 使った分だけの従量課金に限りなく近くなること
と理解しました。
Amazon Aurora – 自動スケーリングサーバーレスデータベースサービス – AWS
Aurora Serverless は、 Aurora のオンデマンド自動スケーリング構成です。データベースのキャパシティーがアプリケーションのニーズに基づいて自動的に起動、シャットダウン、スケールアップまたはスケールダウンされます。Aurora Serverless を使用すれば、データベースインスタンスやクラスターを管理せずにクラウド内でデータベースを実行できます。Aurora Serverless は、自動的に起動し、アプリケーションの使用状況に合わせて容量を調整し、使用していないときはシャットダウンするため、まれにしか発生しない、断続的な、または予測不可能なワークロードに対するシンプルで費用対効果の高いオプションです。
検証機のDBを切り替えてみた
早速適用してみることになりました。
当初東京リージョンはもう少し先かと思ったのですが、既に来ているようでした。
常にアクセスがあるわけでない検証機は考えるまでもなく、費用削減効果が高そうなので、前提条件もクリアしてそうだったので、早速切り替えてみることにしました。
クラメソさんの記事には、本当にいつもお世話になっております。
手順
普通のRDSのバックアップリストアとほどんど変わりません。難しい手順は無いのですが、以下の通りやりました。
スナップショット取得
通常どおりスナップショットを取得。
インスタンス復元
インスタンス復元時にServerlessが指定できます。
起動を待つ
タイプがサーバーレス
と表示されて少し楽しみです。ちなみに従来のAuroraのタイプは Provisioned
になっています。
DBのサイズにもよるのかもしれませんが、クラスタ作成に20分ほどかかりました。
接続確認
作成後、mysqlコマンドで繋ぎにいったところ数十秒応答が無かったので、少し焦りましたが、上記のクラメソさんの記事でも最初は時間かかるとあったので、待ったら普通につながりました。
$ mysql -hmy-serverless-db.cluster.ap-northeast-1.rds.amazonaws.com -umyuser -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.6.10 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
アプリ側はSpring Bootで動いているのですが、当然ながら接続設定変更して普通に動きました。
設定を確認してみる
クラスタ作成後に設定を変更できる点は以下の通りです。
特徴となるのがACU(Aurora キャパシティーユニット)で、2から64で何段階かに調整でき、即時反映されます。
- 最小ACU
- 最大ACU
アイドル時の自動停止までの時間も、最小5分から最大24時間で、秒単位指定できました。
気づいたこと
スケーリングの情報はログに出力されて管理画面で確認できる
拡張・縮退のタイミングはログに出力されているので、後からACUが変更されたタイミングを確認できます。
アプリケーション側から少しでもアクセスあるとAuroraは停止しない
当然といえば当然なのですが、常時DB接続があるタイプのアプリケーションでは、たとえアプリケーションそのものにアクセスが無くともAurora Serverlessは停止しません。監視等でちょっとした情報を定期的にDBに問い合わせる処理があっても同様です。この場合、Aurora Serverlessは最低限の2ACUで動き続けます。
DB接続のメトリクスなどがわかりやすいと思います。
Aurora Provisionedの東京の料金は以下の通りです。
タイプ | 料金 |
---|---|
db.t2.smal | |0.063USD |
db.t2.medium | 0.125USD |
現時点のAurora Serverlessの最低料金は2ACUで0.2USDです。
つまり、もともと大きなインスタンスを割り当てている場合はAuroraは安くつきますが、db.t2.smallで事足りる環境なら現状より高くついてしまうことになります。またはアプリケーション側を停止可能な場合は、開発環境などはアプリケーション側も停止してあげればAuroraが停止して費用的なメリットを見込めます。