Serverless RDB対決：AWS Aurora Serverless v2 vs Alibaba Cloud PolarDB Serverless、予想外の結果に驚愕！

# はじめに

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高いですね！

１日を通して負荷変動がない場合、オンデマンドインスタンスのほうが安くなります。リザープドインスタンスを使えばさらに安くすることができます。

## Serverless v2のメリットは？

スケーラビリティに優れることです。

最小0.5ACUから、128ACUまで、自動でスケールするように設定ができます。

![Screenshot 2023-12-19 at 11.56.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141013/60cfce42-92b4-da70-8845-a7296a3d79a8.png)

そのため、

- トラフィックの波がある場合のコストダウン
- バーストトラフィックへの対応

などがメリットになります。

しかし、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タイプが提供されています。

![polar](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141013/3b9243ff-1278-7ebb-7882-856b9d24607b.png)

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（オンライントランザクション処理）のベンチマークをする。

コマンドは以下のような感じです。

```terminal
% 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
```


## ベンチマーク結果まとめ

![vs](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141013/e79c51f8-8a25-fdbf-3b37-68901e544e7b.png)


**これはマジか？？？**

比較できないぐらい差が開いてるぞ？


Alibaba Cloud PolarDB Serverlessのほうは最大PCUが2でした。

以下のモニタリンググラフを見る限り、何かしらPCUが反応しているようです。瞬間的に2PCUになったかもしれません。大きく勝っているので2PCUだった、としましょう。

![Screenshot 2023-12-19 at 19.34.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141013/2090f208-e537-5187-d8ea-5d3b13e29e18.png)

そのためAlibaba CloudのTotalスコアは、AWSの12倍となりました。

つまり価格性能比では24倍ぐらいAlibaba Cloudが勝ってます。マジか？

## まとめ

ベンチマークに著しい差が出てしまいました。

AWS側の数値が低いというより、Alibaba Cloud側の数値がとても高いです。

これなら、多くのケースでAlibaba Cloud PolarDB Serverlessはコストダウンに繋がるのではないでしょうか。

Auto ScalingするServerless RDBがあればバーストトラフィックが怖くなくなるので、エンジニアは夜もよく寝られそうです。

業務ではServerless RDBの導入はまだでしたが、もう使えそうですね。


---

**識者の方、ベンチマーク大差の理由や、ベンチマークが悪いなど、わかる方がいたら教えてください！**