AWS RDS Auroraでデータベースを構築する際、色々な種類がありどれを使えばよいか迷うことがありました。当時は想定されるリクエスト数や負荷な面で大規模なシステム開発ではなかったため、可用性や性能よりもコスト面で優位(コスパ重視)な選択をする決断となりました。
システムにより要件は異なりますが、参考となればと思います。
また、金額や仕様は2023年1月時点の情報をもとに書いております。
下記3種類で選定していきます、まずはその特徴やコストを把握します。
- Provisioned
スペックをインスタンスタイプ(例: t3.medium)で設定 - Serverless v1
スペックを最大・最小ACUで設定(1ACU = 2GBメモリ) - Serverless v2
同上
それぞれの特徴とコスト
Provisioned
| Multi AZ | 設定可能 |
| Single AZ構成で そのAZで障害発生した場合 | 障害復旧を待つ、または 別の AZ に新しい DB インスタンスを手動で作成する必要があります。 |
| リザーブドインスタンス | 適用できる |
| コスト | 例: t3.medium(4GBメモリ)の場合、約94ドル/月 RI適用時は約78ドル/月(1年, no upfront) |
| オートスケールアップ | できない |
| その他 | 自動スケールアップはされないため アクセスが増え負荷が増えてきた場合 上位のインスタンスタイプに手動で変更するか リードレプリカを追加して負荷分散させる必要がある |
Serverless v1
| Multi AZ | 設定はできないが、複数インスタンスの場合はMulti AZ配置される |
| Single AZ構成で そのAZで障害発生した場合 | 以下公式からの引用 ”クラスターが Aurora Serverless v1 を使用する場合、Aurora は別の AZ に新しい DB インスタンスを自動的に作成します。ただし、このプロセスにはホストの交換が必要であるため、フェイルオーバーよりも時間がかかります。” おそらく30分程度 |
| リザーブドインスタンス | 適用できない |
| コスト | 1ACUあたり約75ドル/月(2GBメモリ) |
| オートスケールアップ | 最小: 1 ACU最大: 256 ACU |
| その他 | 最新のMySQL(v8.0)が使えない 利用可能な最新バージョンはMySQL5.7(2.07.1)(2023/01時点) 接続がないがないと自動で容量ゼロ (0 ACU) にスケールダウン、復帰に数分かかる、ただしアプリ側(例:ECS)のヘルスチェックで定期的にDBアクセスすれば止まらないよう運用可能 Serverless v1を選択する方法は、インスタンス作成時「Aurora(MySQL5.7)2.07.1」を選んで、DB インスタンスクラスにServerless v1を選択する |
参考URL:Amazon Aurora Serverless v1 の使用
Serverless v2
| Multi AZ | 設定可能 |
| Single AZ構成で そのAZで障害発生した場合 | 以下引用 “プロビジョン済みまたは Aurora Serverless v2 クラスターに 1 つの DB インスタンスしか含まれていない場合、またはプライマリインスタンスとすべてのリーダーインスタンスが同じ AZ にある場合は、別の AZ に 1 つまたは複数の新しい DB インスタンスを手動で作成する必要があります。” |
| リザーブドインスタンス | 適用できない |
| コスト | 1ACUあたり約150ドル/月 (2GBメモリ) ※負荷が低い場合0.5ACUで運用でき半額となる |
| オートスケールアップ | 最小: 0.5 ACU最大: 128 ACU |
| その他 | インスタンス作成時「Performance Insights」を無効にしないと最低スペック(0.5ACU)までスケールダウンされないことに注意 これはデフォルトでオンになっている最新のMySQL (v8.0)しか使えない (2023/01時点) |
参考URL:Aurora Serverless v2 を使用する
所感
Serverless v1は最新のMySQL 8が使えない時点で基本的には選択肢からは外れるかなと思います。
あとはオートスケールアップ/ダウンが必要かどうかとコストでServerless v2かProvisionedかを選択すればいいかと思います。
オートスケールアウト/インについてはインスタンスを立ち上げた後、クラスタに対して「Auto Scaling」設定をすればCPU使用率か接続数によってリードレプリカを自動増減させることが可能です。
ただしこれを設定するにはプライマリインスタンスと、1つ以上のリードレプリカが必要となります。


