オブジェクトストレージのスピード比較をしてみる。S3, GCS, R2, Wasabiほか（2023年7月版） 

## あいさつ

ご無沙汰しています、yuta(59RY)です。
未だに自分のホームページやブログを持っていないので、久し振りにQiitaに技術ブログでも投稿してみます。

さて、自分の中では最近 OSS（オープンソースソフトウェア）を使うのがブームになっています。\
・「Twitterのようなもの」でMisskeyを使ってみたり、
・「Slackのようなもの」でMattermostを使ってみたり、
・「Dropboxのようなもの」でnextCloudを使ってみたり･･･

その時に書かせないのがオブジェクトストレージです。

その際最初はiDrive E2を使っていました。
しかしMattermostで絵文字やファイルを開くときにどうも遅くて。。

ということで速いところに引っ越ししたく、今回はオブジェクトストレージのスピード測定をやってみようかと思います。

:::note info
本記事では、速度をすべて 1024 based に統一して記載します。例えば 1 Mibps = 1,024 Kibps として扱います。
:::


## 測定対象

- AWS S3
  - 東京リージョン (ap-northeast-1)
- Google Cloud Storage
  - 東京リージョン (asia-northeast-1)
- CloudFlare R2
  - 位置情報のヒント: アジア太平洋(APAC)
- Wasabi
  - 東京リージョン
- iDrive E2
  - US サンノゼ州

:::note warn
**Oracle Cloudのオブジェクトストレージ入れ忘れました😱**
気が向いたら更新記事を作ろうかと思います。
:::


## 測定環境

自宅、AWS EC2、そしてOracle Cloudを使用します。

| 環境 | 自宅 | EC2 | OCI |
| -- | -- | -- | -- |
| リージョン(場所) | 東京都町田市 | 東京 (ap-northrast-1) | 東京 (ap-tokyo-1) |
| インスタンスタイプ | (MacBook Pro M1 Pro) | c7g.large | VM.Standard.A1.Flex |
| ネットワーク | nuro光 (2Gbps)<br>※2.5Gbps対応ｲｰｻﾈｯﾄ接続 | up to 12.5Gbps | up to 2Gbps |
| 事前に調査した<br>Ookla Speedtest | DL: 1,928.92 Mibps<br>UL: 769.71 Mibps<br>[Result Link](https://www.speedtest.net/result/c/f0bdf5c7-e57a-453d-ab90-0223f93b9a1a) | DL: 9,611.55 Mibps<br>UL: 4,398.16 Mibps<br>[Result Link](https://www.speedtest.net/result/c/0d3cb664-0b7b-4325-a55b-202d418141c5) | DL: 1,855.64 Mibps<br>UL: 819.72 Mibps<br>[Result Link](https://www.speedtest.net/result/c/75deced7-0238-4c84-8876-a146229b080f) |
| OS | macOS | Rocky Linux 9 | Rocky Linux 9 |
| CPU・メモリ | 10コア(P8, E2)・16GB | 2vCPU・4GB | 2vCPU・4GB |

:::note info
このうち、EC2・OCIについては、今回の調査専用でインスタンスを立ち上げました（つまり素の状態です）。
:::


## 測定方法

- 「16KiBのダミーファイル256個」と「256MiBのダミーファイル1個」をそれぞれ作成する
  - 16KiBのダミーファイルは、使い回しではなく、1個1個中身が違うファイル
- 作成したファイルを各オブジェクトストレージにアップロード＆ダウンロードし、その速度を計測する
  - `rclone` コマンドを使用する

### 測定基準

- 以下で判定する
  - 「16KiBのダミーファイル256個」のそれぞれUL/DLの速度
  - 「256MiBのダミーファイル」のそれぞれUL/DLの速度
- それぞれ3回ずつ計測し、一番速かった時間を採用する
- マルチスレッドは無効にした (rcloneのオプション `--multi-thread-streams 1`)


## 測定結果

### アップロード (16KiB×256)

| 環境 | 自宅 | EC2 | OCI | 👑 |
| --- | --: | --: | --: | -- |
| AWS S3 | 700.767 KiB/s | 803.054 KiB/s | 784.026 KiB/s | |
| Google Cloud Storage | 891.791 KiB/s | 967.968 KiB/s | 911.972 KiB/s | 👑(第2候補) |
| CloudFlare R2 | 117.025 KiB/s | 116.722 KiB/s | 118.355 KiB/s | |
| Wasabi | 735.977 KiB/s | 995.812 KiB/s | 1007.823 KiB/s | 👑(第1候補) |
| iDrive E2 | 221.363 KiB/s | 237.928 KiB/s | 150.270 KiB/s | |

### アップロード (256MiB)

| 環境 | 自宅 | EC2 | OCI | 👑 |
| --- | --: | --: | --: | -- |
| AWS S3 | 66.667 MiB/s | 81.668 MiB/s | 76.146 MiB/s | 👑(第2候補) |
| Google Cloud Storage | 81.667 MiB/s | 81.704 MiB/s | 30.874 MiB/s | 👑(第1候補) |
| CloudFlare R2 | 28.443 MiB/s | 28.444 MiB/s | 14.121 MiB/s | |
| Wasabi | 48.008 MiB/s | 47.019 MiB/s | 28.374 MiB/s | |
| iDrive E2 | 15.997 MiB/s | 19.691 MiB/s | 6.960 MiB/s | |

### ダウンロード (16KiB×256)

| 環境 | 自宅 | EC2 | OCI | 👑 |
| --- | --: | --: | --: | -- |
| AWS S3 | 2.719 MiB/s | 2.640 MiB/s | 1.937 MiB/s | |
| Google Cloud Storage | 932.021 KiB/s | 991.900 KiB/s | 1011.916 KiB/s | |
| CloudFlare R2 | 244.977 KiB/s | 244.997 KiB/s | 253.001 KiB/s | |
| Wasabi | 3.484 MiB/s | 3.656 MiB/s | 3.154 MiB/s | 👑 |
| iDrive E2 | 267.408 KiB/s | 295.383 KiB/s | 220.421 KiB/s | |

### ダウンロード (256MiB)

| 環境 | 自宅 | EC2 | OCI | 👑 |
| --- | --: | --: | --: | -- |
| AWS S3 | 91.998 MiB/s | 94.492 MiB/s | 94.484 MiB/s | |
| Google Cloud Storage | 143.992 MiB/s | 200.914 MiB/s | 142.401 MiB/s | 👑 |
| CloudFlare R2 | 46.000 MiB/s | 42.331 MiB/s | 36.661 MiB/s | |
| Wasabi | 74.331 MiB/s | 81.994 MiB/s | 85.495 MiB/s | |
| iDrive E2 | 4.415 MiB/s | 24.001 MiB/s | 16.571 MiB/s | |


## まとめ

**総合的にはGoogle Cloud Storageが最速、しかし状況によっては他のオブジェクトストレージがいい場合もありそう。**

例えば細かいファイルのダウンロードが中心になる場合はWasabi、大容量のアップロードはインフラによってはAWS S3も良い、といった感じでしょうか。

個人利用・小規模の場合は取り敢えず「AWS S3」「Google Cloud Storage」「Wasabi」どれか3択にしておけばまず間違いなし、
しかしクリティカルな要求がされる場合（●●分以内に全てのデータをオブジェクトストレージに格納しなければならない、など）の場合は、当然設計も重要かとは思いますが、どのインフラを使うか、参考になればと思います。

:::note info
筆者は、オブジェクトストレージの総使用量がまだ数GB程度なので、最初はS3を使い、容量が増えてきたら今度はWasabiに引っ越しを考えています。
:::

ご覧いただきありがとうございました。