はじめに
2022年4月 AWS Aurora Serverless v2が一般提供開始されました。
AWS Aurora Serverless v1に打ちのめされたエンジニアでも、理想的なServerless RDBを再度夢見て、v2に期待した方も多いでしょう。
そしてAlibaba Cloudも PolarDB Serverlessをリリースしています。
そこで、Serverless RDB同士で価格と性能を比較してみました。
先に結論を言うと、Alibaba Cloudが飛び抜けて高い性能(12倍)になりました。価格性能比だと24倍です。マジか?
AWS Aurora Serverless v2ってどうなの?
Aurora Serverless v2のコストはAurora Capacity Unit(ACU)で計算されます。
ACUはCPUと2GBメモリに対応する性能です。
オンデマンドインスタンスのdb.t3.smallの性能が1 ACU相当だそうです。
1ACUのRDBを1ヶ月使うケースでオンデマンドとServerlessを比較してみます。
種別 | 月コスト | 1時間コスト |
---|---|---|
オンデマンド db.t3.small | 6700円 | $0.063 |
Serverless v2 1.0 ACU | 21000円 | $0.20 |
リザーブドインスタンス db.t3.small(1年分前払い) | 4900円 | $0.046 |
Serverless v2高いですね!
1日を通して負荷変動がない場合、オンデマンドインスタンスのほうが安くなります。リザープドインスタンスを使えばさらに安くすることができます。
Serverless v2のメリットは?
スケーラビリティに優れることです。
最小0.5ACUから、128ACUまで、自動でスケールするように設定ができます。
そのため、
- トラフィックの波がある場合のコストダウン
- バーストトラフィックへの対応
などがメリットになります。
しかし、Serverless v2をキープするだけでも0.5ACU = 10000円/月以上かかるので、ちゃんと見積もりが必要です。
多くの場合、オンデマンドでRDBを建てた方が安上がりになるでしょう。
というわけで、現在のAWS Aurora Serverless v2はもう一歩だと思っています。
Alibaba Cloud PolarDB Serverless
では、ここでAWSではなく、Alibaba Cloudの説明に移ってみます。
Alibaba CloudのPolarDBはMySQL、PostgreSQLと100%互換のRDBです。AWSと同じくServerlessタイプが提供されています。
AWSと似ていて、PCUという基準で性能を設定できます。PCUは
A PCU is equivalent to one CPU core and 2 GB of memory.
ということが書いてあるので、AWSのACUとそっくり(2GBとか)です。
Alibaba Cloud PolarDB Serverless のコスト
最小構成
リードレプリカを1、1PCUの設定で$0.098/hが最低コストです。
(リードレプリカを0すれば$0.049/hになりますが冗長性が下がります)
ただし、最小PCUは1に設定した場合、最大PCUは2以上(最小+1以上)しか設定できません。
最大構成
リードレプリカを7、32PCUにしたら $12.544/h になります。
Alibaba Coudは、スクリーンショットのようにリソース作成前にコストを提示してくれます。ここは素敵です。
しかし、それ以外に詳細な料金を調べようとするとWebから見つけられなかったり、料金計算ツールでも項目がなかったりするので改善して欲しいところです。
AWS Aurora Serverless v2 vs Alibaba Cloud PolarDB Serverless
AWS 1ACU = Alibaba Cloud 1PCU と見なして、値段を比較してみます。
種別 | 月コスト | 1時間コスト |
---|---|---|
AWS Aurora Serverless v2 1ACU | 21000円 | $0.2 |
Alibaba Cloud PolarDB Serverless 1PCU | 10400円 | $0.098 |
この時点では、Alibaba Cloudが半額ぐらいに見えますね。
RDBに限らず、AWSとAlibaba Cloudを比べると、いつもAlibaba Cloudが安いです。負けないように下げているんでしょうね。
AWS 1ACU vs Alibaba Cloud 1PCU
じゃぁ、AWS 1ACU vs Alibaba Cloud 1PCUで性能は同じなのか?
ここが違うと価格比較の意味がないので、性能を比較してみます。
AWS Aurora Serverless v2 条件
- デフォルトの設定(MySQL)
- 最小ACUを1
- 最大ACUを1
Alibaba Cloud PolarDB Serverless 条件
- デフォルトの設定(MySQL)
- 最小PCUを1
- 最大PCUを2 (1が設定できないから)
ベンチマーク方法
AWSはEC2で、Alibaba CloudはECSでインスタンスを立てて、sysbenchでOLTP(オンライントランザクション処理)のベンチマークをする。
コマンドは以下のような感じです。
% sysbench --tables=3 --table_size=10000 --threads=3 --time=10 oltp_read_write run
//接続設定は省略
どちらも2コアCPUのUbuntu22インスタンスから打ち込みました。また、どちらもaptでインストールしたsysbenchを使いました。
AWS Aurora Serverless v2の結果
SQL statistics:
queries performed:
read: 3108
write: 888
other: 444
total: 4440
transactions: 222 (21.69 per sec.)
queries: 4440 (433.82 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 10.2323s
total number of events: 222
Latency (ms):
min: 46.76
avg: 136.85
max: 501.77
95th percentile: 303.33
sum: 30380.62
Threads fairness:
events (avg/stddev): 74.0000/0.82
execution time (avg/stddev): 10.1269/0.08
Alibaba Cloud PolarDB Serverlessの結果
SQL statistics:
queries performed:
read: 73556
write: 21016
other: 10508
total: 105080
transactions: 5254 (524.76 per sec.)
queries: 105080 (10495.24 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 10.0106s
total number of events: 5254
Latency (ms):
min: 2.96
avg: 5.71
max: 57.06
95th percentile: 24.83
sum: 30023.70
Threads fairness:
events (avg/stddev): 1751.3333/50.15
execution time (avg/stddev): 10.0079/0.00
ベンチマーク結果まとめ
これはマジか???
比較できないぐらい差が開いてるぞ?
Alibaba Cloud PolarDB Serverlessのほうは最大PCUが2でした。
以下のモニタリンググラフを見る限り、何かしらPCUが反応しているようです。瞬間的に2PCUになったかもしれません。大きく勝っているので2PCUだった、としましょう。
そのためAlibaba CloudのTotalスコアは、AWSの12倍となりました。
つまり価格性能比では24倍ぐらいAlibaba Cloudが勝ってます。マジか?
まとめ
ベンチマークに著しい差が出てしまいました。
AWS側の数値が低いというより、Alibaba Cloud側の数値がとても高いです。
これなら、多くのケースでAlibaba Cloud PolarDB Serverlessはコストダウンに繋がるのではないでしょうか。
Auto ScalingするServerless RDBがあればバーストトラフィックが怖くなくなるので、エンジニアは夜もよく寝られそうです。
業務ではServerless RDBの導入はまだでしたが、もう使えそうですね。
識者の方、ベンチマーク大差の理由や、ベンチマークが悪いなど、わかる方がいたら教えてください!