OCI-Block VolumeとAmazon EBS gp3を比較してみた

#はじめに
この記事は[Oracle Cloud Infrastructure #2 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/oci2) の12月6日の記事となります。

先日のAWS re:Inventにて、AWSの新たなEBSボリュームタイプとしてAmazon EBS gp3が発表されました。
内容については[クラスメソッドさんの記事](https://dev.classmethod.jp/articles/ebs-gp3/)が非常に分かりやすく纏まっていますので、こちらをご確認ください。

これまでのAmazon EBS gp2と比較しIOPSや1GBあたりのコストといった点でAmazon EBS gp3にはメリットがありますが、OCIのBlock Volumeと比較するとどうなのかを確認してみました。

#マニュアルベースでの比較

まずはマニュアル等を参考に、主要な項目を比較してみます。

| 項目 | OCI - Block Volume<br>(Balanced) | Amazon EBS gp3 | Amazon EBS gp2 |
|:--|:-:|:-:|:-:|
| サイズ  | 50GB～32TB  | 1GB～16TB  | 1GB～16TB  |
| 耐久性  | 99.99%  | 99.9%  | 99.9%  |
| IOPS | 1GBあたり60 IOPS<br>最大25,000IOPS  | 3,000 ～ 16,000IOPS  | 1GBあたり3IOPS <br>100 ～ 16,000IOPS |
| IOPSベースライン | 3,000IOPS(※1)  | 3,000IOPS  | 100IOPS |
| スループット | 1GBあたり480KB/s <br>最大480MB/s | 250MiB/s ～ 1,000MiB/s  | ～250MiB/s  |
| ストレージ料金(1GB/月あたり) | $0.0255  | $0.096  | $0.12  |
| IOPS料金(1 IOPS/月あたり) | - |  $0.006<br>※3,000 IOPSまで無料 |  - |
| IOPS料金(ストレージサイズ 1GB/月あたり)※2 | $0.017  | - |  - |
| スループット料金(1MB/s/月あたり) | -  | $0.048<br>※125MB/sまで無料  | -  |
※1.OCI-Block Storageは最低50GB～のため、50GB作成時のIOPSを記載
※2.IOPSの単価はBalancedで利用する10VPUs/1GBの価格を記載

[参考ドキュメント]

* [Oracle Storage Cloud Pricing](https://www.oracle.com/jp/cloud/storage/pricing.html)
* [Oracle Cloud Infrastructureドキュメント - ブロック・ボリューム・パフォーマンス](https://docs.cloud.oracle.com/ja-jp/iaas/Content/Block/Concepts/blockvolumeperformance.htm)
* [OCI Block Volumesに関するよくある質問](https://www.oracle.com/jp/cloud/storage/block-volumes-faq.html)
* [Amazon EBS pricing](https://aws.amazon.com/ebs/pricing/)
* [Amazon EBS features](https://aws.amazon.com/ebs/features/)
* [Amazon EBS General Purpose Volumes](https://aws.amazon.com/jp/ebs/general-purpose/)

上記の表の内容をぱっと見てみても

* 最大ボリュームや最大IOPSについてはOCIのほうが大きい
* ただし、IOPSの算出方法がOCIとAWSでそれぞれ異なる
* スループットはAmazon EBS gp3のみユーザ側で指定できる

といったように単純な比較が難しい内容となります。
そのため、続いては実際に求める性能を決めてその際に発生するコスト元に比較をしたいと思います。
#コスト試算
## 500GB & 3,000 IOPS の場合
### OCI - Block Volume
計算としては非常にシンプルな掛け算と足し算ではありますが、詳しく知りたい方は@yamada-hakaseさんの[この記事](https://qiita.com/yamada-hakase/items/680b7dc596da016aa71c)をご確認ください。

| 項目 | 単価 | 必要数 | 計算式 | 結果 |
|:--|:-:|:-:|:-:|:-:|
| ストレージ料金  | 0.0255$  | 500  | 0.0255 × 500  |12.75$ |
| IOPS(VPUs)料金  | 0.017$  | 500  | 0.017 × 500  |8.5$ |
| 合計  | -  | -  | - |**21.25$**|
※IOPSの単価はBalancedで利用する10VPUs/1GBの価格を記載

また、上記したようにOCIのBlock Volume(Balance)場合は1GBあたり60 IOPSが出ます。
そのため、500GBのストレージの場合はBalanceタイプの最大IOPSである**25,000IOPSが出る**こととなります。
※500GB × 60 IOPS = 30,000 IOPS → 切り捨てて25,000 IOPS
### Amazon EBS gp3
上記したようにEBS gp3場合は最低3,000IOPSが確保され、かつ3,000IOPSまでは無料で利用できます。
そのため、計算式としては以下のようにストレージ料金部分を計算するだけでOKです。

| 項目 | 単価 | 必要数 | 計算式 | 結果 |
|:--|:-:|:-:|:-:|:-:|
| ストレージ料金  | 0.096$  | 500  | 0.096 × 500  |48$ |
| IOPS料金  | -  | -  | -  |- |
| 合計  | -  | -  | - |**48$**|

###計算結果比較(500GB & 3,000 IOPSの場合)
さて、計算した結果が以下です。

| 項目 | サイズ | IOPS | スループット | コスト/月 |
|:--|:-:|:-:|:-:|:-:|
| OCI-Block Storage(Balance)  | 500GB  | 25,000 IOPS  | 240MB/s※1  |**21.25$** |
| Amazon EBS gp3  | 500GB  | 3,000 IOPS  | 125MB/s※2  |**48$**|
※1.サイズ500GBの際の最大スループットを記載
※2.無料枠として提供されるスループットを記載

ストレージの性能として500GB&3,000IOPSを求めた場合、OCI-Block StorageがEBSと比較して**約45%のコスト**であるのにも関わらず**非常に高性能なストレージを利用可能**だということがわかりました。

## 500GB & 16,000IOPS の場合
結果がどうなるかはほぼ見えてしまっていますが、EBS gp3の性能をOCI-Block Storageの性能に近づけるために、500GB $ 16,000IOPSを性能要件として算出してみます。

### OCI - Block Volume
上記の計算にて500GB&16,000 IOPSの性能要件が満たされているので省略します。
### Amazon EBS gp3
| 項目 | 単価 | 必要数 | 計算式 | 結果 |
|:--|:-:|:-:|:-:|:-:|
| ストレージ  | 0.096$  | 500  | 0.096 × 500  |48$ |
| IOPS  | 0.006$  | 13,000  | 0.006 × 13,000  |78$ |
| 合計  | -  | -  | - |**126$**|
※13,000 = 16,000 - 3,000(無料枠)

###計算結果比較(500GB & 16,000 IOPSの場合)
こちらも計算した結果が以下となります。

| 項目 | サイズ | IOPS | スループット | コスト/月 |
|:--|:-:|:-:|:-:|:-:|
| OCI-Block Storage  | 500GB  | 25,000 IOPS  | 240MB/s※1  |**21.25$** |
| Amazon EBS gp3  | 500GB  | 16,000 IOPS  | 125MB/s※2  |**126$**|
※1.サイズ500GBの際の最大スループットを記載
※2.無料枠として提供されるスループットを記載

こちらの場合OCI-Block StorageがEBSと比較して**約16%のコスト**となり、それでもまだ**1.5倍程度のIOPS**が出ることになります。

なおEBSの場合、gp3のIOPSの最大が16,000IOPSのため、これ以上のIOPSを求める場合はio2(プロビジョンド IOPS SSD)を採用することとなりますので、gp3と比較してレートが比較的高額となっるため、更に価格差が出てしまいます。

#終わりに

[Oracle社のサイトのこのページ](https://www.oracle.com/jp/cloud/economics/)にあるように、OCIはAWSと比較して非常にコストパフォーマンスが優れています。

ストレージに関してはAWSより新たにAmazon EBS gp3ストレージができた事により差が縮まったものの、
それでもまだOCIの方がコストパフォーマンスが良いと言えそうです。