こんにちは。
DevOps担当、アプリケーションサービス部の兼安です。
今回は、2024年10月末に一般提供を開始した Amazon Aurora PostgreSQL Limitless Database についてお話します。
- 本記事の注意事項
- 本記事の対象者
- Amazon Aurora PostgreSQL Limitless Database とは
- Amazon Aurora PostgreSQL Limitless Databaseを検証する際の注意点
- Amazon Aurora PostgreSQL Limitless Databaseを構築するCloudFormationテンプレート
- Serverless v2 と Limitless DatabaseのCloudFormationテンプレートの比較
- Amazon Aurora PostgreSQL Limitless Databaseの料金計算の留意点
- まとめ
- [余談]Amazon Aurora PostgreSQL Limitless DatabaseはNewSQLなのでしょうか?
本記事の注意事項
- 本記事は2024年11月中旬時点の情報に基づいて執筆しています。
- 今後のサービスの変更により、本記事の内容からは仕様が変更される可能性があることをご了承ください
本記事の対象者
- AWSのデータベースサービスの知識がある方
- 大規模なデータを扱う必要がある方
- CloudFormationテンプレートの使用方法をご存知の方
Amazon Aurora PostgreSQL Limitless Database とは
2023年12月、Amazon Aurora Limitless Databaseがプレビュー版として公開されました。
本サービスの特徴は、リード性能とライト性能の水平スケーラビリティです。
こちらが2024年10月末にAmazon Aurora PostgreSQL Limitless DatabaseとしてGA(=一般提供)された次第です。
AWS のスケーラブルなデータベースには、Amazon Aurora Serverless v2 が存在します。
Amazon Aurora Serverless v2とAmazon Aurora PostgreSQL Limitless Databaseの違いは、以下のような点が挙げられます。
- Amazon Aurora Serverless v2
- 垂直スケーリング
- 最小最大ACUが0.5/256
- Amazon Aurora PostgreSQL Limitless Database
- 水平スケーリング
- 最小最大ACUが16/6144
(2024/11/18 追記)SNSで指摘いただきました。
Amazon Aurora Serverless v2の最大ACUは、エンジンバージョンによって変わります。
選択したエンジンバージョンによっては最大256ACUまで指定可能なので、こちらを記載しています。
詳細はこちらをご覧ください。
Aurora Serverless v2 の働き - Amazon Aurora
一言で言うと、想定している規模が異なると言えるでしょう。
Amazon Aurora PostgreSQL Limitless Databaseは、Amazon Aurora Serverless v2では性能とコストパフォーマンスが要件に合わなくなった時に検討するサービスと考えられます。
Amazon Aurora PostgreSQL Limitless Databaseを検証する際の注意点
本記事を書いている2024年11月中旬時点で、Amazon Aurora PostgreSQL Limitless Databaseは一時停止がサポートされていません。
従って、データベースを停止させるには、データベースを削除するしかないと思いますので、ご注意ください。
Amazon Aurora PostgreSQL Limitless Databaseを構築するCloudFormationテンプレート
上述の通り、Amazon Aurora PostgreSQL Limitless Databaseを構築する際には、一時停止がサポートされていないため、検証にはIaCが必要と判断し、CloudFormationテンプレートを書いてみました。
最小構成にしたつもりです。
VPCは別途作っておき、サブネットIDとセキュリティグループIDをパラメータで指定する形としています。
こちらのCloudFormationテンプレートを実行すると、Amazon Aurora PostgreSQL Limitless Databaseが構築されます。
構築後は、psql
コマンドなどで接続できるはずです。
例)
psql -h <エンドポイント> -p 3306 -U <DBユーザー名> -d postgres_limitless
こちらの接続コマンドは下記ページを参考にしています。
postgres_limitless
はデフォルトで作られるデータベース名です。
一つ注意点があり、私が構築したところポート番号がPostgreSQLの5432ではなく3306になったので、ここに書いている例はポート番号を3306にしています。
構築した時期や環境によって異なる可能性があるため、必ずご自身の環境でエンドポイントとポート番号を確認してください。
参考:Working with DB shard groups - Amazon Aurora
接続したら、こちらのページに載っている各種クエリで動作を確認できるはずです。
接続とクエリの確認を簡単に行うなら、Amazon CloudShellが便利です。
Amazon CloudShellもVPCに接続できるので、こちらを使ってAmazon Aurora PostgreSQL Limitless Databaseに接続できます。
Serverless v2 と Limitless DatabaseのCloudFormationテンプレートの比較
もう一つ、比較対象としてAmazon Aurora Serverless v2のCloudFormationテンプレートも書いてみました。
こちらと比較すると、いくつか違いが見えて来ます。
エンジンバージョンの違い
Amazon Auroraにおいて、選択し得るエンジンバージョンは以下のコマンドで取得できます。
aws rds describe-db-engine-versions --engine aurora-postgresql --query 'DBEngineVersions[].EngineVersion'
結果は以下の通りです。
# 途中省略 "15.2", "15.3", "15.4", "15.5", "15.6", "15.7", "15.8", "16.1", "16.2", "16.3", "16.4", "16.4-limitless" ]
Amazon Aurora PostgreSQL Limitless Databaseの場合は、エンジンバージョンが16.4-limitless
しか選択できません。
将来はxx.xx-limitless
と増えていくのでしょうね。
DB シャードグループ
Amazon Aurora PostgreSQL Limitless Databaseの場合は、DB シャードグループが必要です。
DBクラスターのリソース定義でClusterScalabilityType
をlimitless
に設定した上で、DB シャードグループのリソースも記述します。
DBCluster: Type: AWS::RDS::DBCluster Properties: Engine: aurora-postgresql DBClusterIdentifier: !Sub "${ServiceName}-${StageName}-cluster-aurora-limitless" EngineVersion: !Ref EngineVersion MasterUsername: !Ref MasterUsername MasterUserPassword: !Ref MasterUserPassword ClusterScalabilityType: limitless # ClusterScalabilityTypeをlimitlessに設定 # 以下省略
DBShardGroup: Type: AWS::RDS::DBShardGroup Properties: ComputeRedundancy: !Ref ComputeRedundancy DBClusterIdentifier: !Ref DBCluster DBShardGroupIdentifier: !Sub "${ServiceName}-${StageName}-shard-group-aurora-limitless" MaxACU: !Ref MaxACU MinACU: !Ref MinACU PubliclyAccessible: false
参考
DB シャードグループが必要なことはAWSマネジメントコンソールの作成画面でも確認できますね。
Aurora I/O 最適化が必須
AWSマネジメントコンソールの作成画面でAurora I/O 最適化が必須なことが確認できるので、これを記述する必要があります。
DBCluster: Type: AWS::RDS::DBCluster Properties: Engine: aurora-postgresql DBClusterIdentifier: !Sub "${ServiceName}-${StageName}-cluster-aurora-limitless" EngineVersion: !Ref EngineVersion MasterUsername: !Ref MasterUsername MasterUserPassword: !Ref MasterUserPassword ClusterScalabilityType: limitless StorageType: aurora-iopt1 # Aurora I/O 最適化が必須 # 以下省略
Performance Insightsと拡張モニタリングが必須
AWSマネジメントコンソールの作成画面でモニタリングのセクションを見ると、Performance Insightsが必須なことが確認できます。
ポイントは、保持期間の最小が1ヶ月なことです。
つまり、無料枠7日間を超えているので必ずPerformance Insightsが有料版になるということです。
同じくモニタリングのセクションで追加設定を開くと、拡張モニタリングが必須なことも確認できます。
CloudFormationテンプレートのDBクラスターの定義にはこれらを反映する必要があります。
拡張モニタリングを有効にするためには、それ用のIAMロールが必要なのでこれも定義します。
DBCluster: Type: AWS::RDS::DBCluster Properties: Engine: aurora-postgresql DBClusterIdentifier: !Sub "${ServiceName}-${StageName}-cluster-aurora-limitless" EngineVersion: !Ref EngineVersion MasterUsername: !Ref MasterUsername MasterUserPassword: !Ref MasterUserPassword ClusterScalabilityType: limitless StorageType: aurora-iopt1 Performance InsightsEnabled: true # Performance Insightsを有効にする Performance InsightsRetentionPeriod: 31 # Performance Insightsの保持期間を1ヶ月に設定 MonitoringInterval: !Ref MonitoringInterval # 拡張モニタリングのインターバルで0より大きい値を設定することで拡張モニタリングを有効にする MonitoringRoleArn: !GetAtt MonitoringRole.Arn # 拡張モニタリングを有効にするためのIAMロール # 以下省略
CloudWatch Logsのログエクスポートが必須
少々わかりにくいですが、こちらもAWSマネジメントコンソールの作成画面で確認できます。
Aurora PostgreSQL Limitless Database は大規模なデータをターゲットとしているためログも大量発生すると思われます。
従って、CloudWatch Logs の費用が必ず発生する点は留意しておくべきと思います。
CloudFormation テンプレートの DB クラスターの定義に反映すると、以下のようになります。
DBCluster: Type: AWS::RDS::DBCluster Properties: Engine: aurora-postgresql DBClusterIdentifier: !Sub "${ServiceName}-${StageName}-cluster-aurora-limitless" EngineVersion: !Ref EngineVersion MasterUsername: !Ref MasterUsername MasterUserPassword: !Ref MasterUserPassword ClusterScalabilityType: limitless StorageType: aurora-iopt1 Performance InsightsEnabled: true Performance InsightsRetentionPeriod: 31 MonitoringInterval: !Ref MonitoringInterval MonitoringRoleArn: !GetAtt MonitoringRole.Arn EnableCloudwatchLogsExports: # CloudWatch Logsのログエクスポートを有効にする - postgresql # 以下省略
Amazon Aurora PostgreSQL Limitless Databaseの料金計算の留意点
IaCを書きながら、AWSマネジメントコンソールを確認していったことで、Amazon Aurora PostgreSQL Limitless Databaseの必須設定がわかりました。
これを基に、Amazon Aurora PostgreSQL Limitless Databaseの料金計算における留意点を列挙します。
まず、料金はこちらのページのAurora PostgreSQL 互換エディション
の無制限のデータベース
を見ます。
「無制限のデータベース」は他のタイプと異なり、StandardがなくてAurora I/O 最適化しかないのでここを見ればOKのはずです。
ACUは最小が16なので、×16が最低料金です。
Performance InsightsをONにして、保持期間を1ヶ月以上にする必要があるのでPerformance Insightsの料金も発生します。
この時の計算ですが、Aurora Serverless v2がACUごとの支払いになっているので、Amazon Aurora PostgreSQL Limitless Databaseもこれに準ずるのではないかと思います。
ここは、まだ私の方で本格的に運用しておらず確認できていないので分かり次第報告したいと思います。
1 か月の保存を選択した場合、USD 0.439 を 1 か月あたり ACU ごとに支払います。保存が 1 か月追加するごとに (最大 24 か月)、USD 0.0185 が月額料金に追加されます。例えば、2 か月の保存を選択した場合、(USD 0.439 + USD 0.0185) を 1 か月あたり ACU ごとに支払います。
拡張モニタリングとCloudWatch Logsのログエクスポートが必須なので、CloudWatch Logsの料金がかなり発生することも留意する必要があります。
拡張モニタリングの料金は、Amazon CloudWatch Logs に示された無料利用枠を超えた場合にのみ課金されます。CloudWatch Logs のデータ転送料金とストレージ料金に基づいて料金が決まります。
まとめ
2024年10月末、Amazon Aurora PostgreSQL Limitless Databaseが一般提供を開始しました。
本サービスの検証を進める中で、一時停止がサポートされていない点が課題と感じたため、CloudFormation テンプレートを活用しました。
IaCを書きながら実際に構築してみたところ、Amazon Aurora Serverless v2とは必須設定に違いがあることがわかりました。
- エンジンバージョンの違い
- DB シャードグループの必要性
- Aurora I/O 最適化の必須
- Performance Insightsと拡張モニタリングが必須
- CloudWatch Logsのログエクスポートの必須
こうやって見ていくと、Amazon Aurora PostgreSQL Limitless Databaseは大規模なデータを扱うことを想定しており、ストレージの最適化と強固なモニタリングを必須としていることがわかります。
Amazon Aurora Serverless v2とは、規模感が異なると言えるでしょう。
今回の記事を参考に、みなさんもAmazon Aurora PostgreSQL Limitless Databaseをぜひお試しください。
[余談]Amazon Aurora PostgreSQL Limitless DatabaseはNewSQLなのでしょうか?
私は公式で謳っているのを見たことがないのでなんともいえませんが、オンライントランザクションの負荷をスケーラビリティで軽減しているという観点では、NewSQLっぽくはあります。
ただし、NewSQL製品の多くがNoSQLの持つKVS・スキーマレスの特性を併せ持っているのに対して、Amazon Aurora PostgreSQL Limitless DatabaseはRDBベースです。
従って、世の中のNewSQL製品とAmazon Aurora PostgreSQL Limitless Databaseは方向性が若干異なっており、直接比較されるものではないと考えています。
兼安 聡(執筆記事の一覧)
アプリケーションサービス部 DS3課所属
2024 Japan AWS Top Engineers (Database)
2024 Japan AWS All Certifications Engineers
認定スクラムマスター
広島在住です。今日も明日も修行中です。