Amazon S3 Express One Zone って本当に速いのか?計測してみた

記事タイトルとURLをコピーする

こんにちわ!サーバーワークス日本最南端社員の久保玉井(くぼたまい)です。

先週、ラスベガスで開催された re:Invent2023 に参加してきたのですが、その中の発表で「 Amazon S3 Express One Zone 」なる新しい S3 のストレージクラスが発表されました。

「ちょっ速になる!」という印象で、気になったので本当に速いのか計測をしてみました。

この記事がどなたかのお役に立てれば嬉しいです。

Amazon S3 Express One Zone とは?

re:Invent2023 で新たに発表された S3 のストレージクラスですね。

詳細な説明のブログ記事もAWSから公開されていました。

aws.amazon.com

S3 Standard ストレージ クラスよりも最大 10 倍優れたパフォーマンスを提供するように設計されており、一貫した 1 桁ミリ秒のレイテンシーで 1 秒あたり数十万のリクエストを処理するため、最も頻繁に使用するストレージ クラスに最適です。

また小さいオブジェクトの読み込みに効果を発揮するとの事。

S3 Express One Zone は一貫して非常に低い遅延を実現しているため、小さなオブジェクトを S3 Standard と比較して最大 10 倍高速に読み取ることができます。

ただ名前に記載されている「 One Zone 」のとおり、AZ障害が発生するとデータ損失もありえるとの事です。

耐久性 –万が一、AWS アベイラビリティーゾーンの全体または一部が紛失または破損した場合、ワンゾーンのストレージクラスのデータが失われる可能性があります。

現地で発表され、ブログ記事も読みここで気になったことがあります。

どんだけ速いんだろう? S3 Standard ストレージクラスと比較してみたい!

ということで計測比較をしてみました。

読み込み速度を比較してみた

気になったらすぐ試せるのがクラウドのメリットですね。 今回は以下の内容で速度計測をしてみました。

  1. S3 Standard ストレージクラスで新規にS3バケットを作成
  2. S3 Express One Zone 用のディレクトリバケットも作成
  3. VPC を作成し、S3 および S3 Express One Zone 用のエンドポイントをそれぞれ作成
  4. EC2 インスタンスを立ち上げて ファイルを生成。その後そのファイルをそれぞれのバケットへアップロード
  5. 別途 aws cli にて当該バケットからダウンロードを6回ほど実施し計測

以下より具体的な手順を記載していきます。

S3 Standard ストレージクラスで新規にS3バケットを作成

まずは比較対象となる S3 Standard ストレージクラスを作成しました。

バケット名はよくある名前の「 20231205-kubotamai-normal 」で作成です(久保玉井という名前がそんなに無い件)

S3 Express One Zone 用のディレクトリバケットも作成

次にS3 Express One Zone 用のバケットも作成します。

作成する際には利用するAZも指定します。 ちなみに暗号化はまだ SSE-S3 のみに対応の様子です。

S3 Express One Zone 用のバケットはリージョンやAZ名も含めた命名になりました。

VPC を作成し、S3 および S3 Express One Zone 用のエンドポイントをそれぞれ作成

S3 側の準備も出来ましたので、EC2を設置するVPCも作成します。 なお、そのVPCにもそれぞれエンドポイントを作成しました。

EC2 インスタンスを立ち上げて ファイルを生成。その後そのファイルをそれぞれのバケットへアップロード

準備が出来ましたので、ターミナル操作ができるようにEC2 インスタンスを立ち上げて処理していきます。

aws cli のバージョンアップ

Amazon Linux 2023に入っているバージョンのaws cliだとまだ、S3 Express One Zone 用の操作が出来ませんでした。よってバージョンアップをします。

まずは最初に入っている aws cli をアンインストールします。

$ sudo yum -y remove awscli

その後最新版をインストールしました。

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
$ aws --version
aws-cli/2.14.5 Python/3.11.6 Linux/6.1.61-85.141.amzn2023.x86_64 exe/x86_64.amzn.2023 prompt/off

要らなくなったファイル類は消しときます。

$ rm -rf ./aws && rm -rf awscliv2.zip

aws cli のオプション指定

S3 へファイルを保存するにあたり、マルチパートで処理したかったので、オプション指定をしました。

$ aws configure set default.s3.max_concurrent_requests 10
$ aws configure set default.s3.multipart_threshold 64MB
$ aws configure set default.s3.multipart_chunksize 16MB

ファイルの生成

今回は単一の1GBのファイルと1MBのファイル1000個を準備、それでダウンロード速度の計測をしていきます。

まずは1GBのファイルの準備をします。

$ dd if=/dev/urandom of=1GB.file bs=1 count=0 seek=1G

次に1MBのファイルを1000個準備します。

$ mkdir files && cd files
$ dd if=/dev/urandom of=test.file bs=1M count=1;for i in {1..1000};do cp test.file test_${i}.file;done

準備したファイルのアップロード

生成したファイルをそれぞれ、S3 Standard ストレージクラスのバケット、S3 Express One Zone 用のバケットへアップロードします。

$ cd ..
$ aws s3 sync ./ s3://20231205-kubotamai-normal/upload1/
$ aws s3 sync ./ s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/

別途 aws cli にて当該バケットからダウンロードを6回ほど実施し計測

アップロードなど事前に準備が出来ましたので、aws cliコマンドでダウンロード処理を実施してみました。

S3 Standard ストレージクラスでの計測:: 1GBのファイル編

アップロードしたファイルを、ローカルの別ディレクトリにダウンロードします。

$ time -p aws s3 cp s3://20231205-kubotamai-normal/upload1/1GB.file ./download1/1GB.file
download: s3://20231205-kubotamai-normal/upload1/1GB.file to download1/1GB.file
real 16.46
user 5.87
sys 5.19

上記のダウンロード先のディレクトリを「 download2 」や「 download3 」などに変更して数回実施しました。

S3 Express One Zone クラスでの計測:: 1GBのファイル編

次の計測に備えて当該ディレクトリは消しときました。

rm -rf ./download*

その後、同じように数回 S3 Express One Zone クラスに保存されている1GBのファイルをダウンロードします。

$ time -p aws s3 cp s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/1GB.file ./download1/1GB.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/1GB.file to download1/1GB.file
real 16.35
user 4.36
sys 2.29

こちらも、ダウンロード先のディレクトリを「 download2 」や「 download3 」などに変更して数回実施しました。

S3 Standard ストレージクラスでの計測:: 1000個のファイル編

単一のファイルの次は1000個のファイルもダウンロードします。一つずつダウンロードするとかありえないのでディレクトリ単位で同期させます。

$ time -p aws s3 sync s3://20231205-kubotamai-normal/upload1/files/ ./download1/
real 19.78
user 9.73
sys 5.37

こちらも、ダウンロード先のディレクトリを「 download2 」や「 download3 」などに変更して数回実施しました。

S3 Express One Zone クラスでの計測:: 1000個のファイル編

もうそろそろ作業チックになってきて飽きてきました爆

$ time -p aws s3 sync s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/ ./download1/
real 15.79
user 7.30
sys 2.35

計測結果は?本当に速いの?

一応 2種類のストレージクラス x 6回 x 2種類のファイル種別つまり、合計で24回計測しました。 以下各実施毎の数値と最終的な平均値です。

まずは1GB単一ファイルでの計測結果

回数 S3 Standard S3 Express One Zone
1回目 16.46 16.35
2回目 16.93 16.3
3回目 16.89 16.37
4回目 16.78 16.41
5回目 16.84 16.31
6回目 18.79 16.45
平均 17.115秒 16.365秒

単一な巨大なファイルサイズはそんなに差が無い気がしました。 次は1000個の1MBのファイルでの比較です。

回数 S3 Standard S3 Express One Zone
1回目 19.78 15.87
2回目 16.17 15.89
3回目 15.56 16.22
4回目 22.41 15.79
5回目 20.24 15.95
6回目 22.93 15.92
平均 19.515秒 15.94秒

数が多くなると結構差が出た感じですね。1000個のファイルで4秒ぐらいの差が出てました。 面白い!

ダウンロード状況を見ても違いを感じる

上記で速度差があることは判りました。

さらに実際に操作してみてわかったのが、S3 Express One Zoneだとダウンロード処理がランダムアクセスで並列に実行されているのが、コンソール表示でも確認が出来ました。

S3 Standardでダウンロードした場合の様子。なんか連番で処理されてる感じですよね?

download: s3://20231205-kubotamai-normal/upload1/files/test_99.file to download1/test_99.file
download: s3://20231205-kubotamai-normal/upload1/files/test_990.file to download1/test_990.file
download: s3://20231205-kubotamai-normal/upload1/files/test_987.file to download1/test_987.file
download: s3://20231205-kubotamai-normal/upload1/files/test_986.file to download1/test_986.file
download: s3://20231205-kubotamai-normal/upload1/files/test_995.file to download1/test_995.file
download: s3://20231205-kubotamai-normal/upload1/files/test_991.file to download1/test_991.file
download: s3://20231205-kubotamai-normal/upload1/files/test_988.file to download1/test_988.file
download: s3://20231205-kubotamai-normal/upload1/files/test_989.file to download1/test_989.file
download: s3://20231205-kubotamai-normal/upload1/files/test_992.file to download1/test_992.file
download: s3://20231205-kubotamai-normal/upload1/files/test_999.file to download1/test_999.file
download: s3://20231205-kubotamai-normal/upload1/files/test_996.file to download1/test_996.file
download: s3://20231205-kubotamai-normal/upload1/files/test_994.file to download1/test_994.file
download: s3://20231205-kubotamai-normal/upload1/files/test_993.file to download1/test_993.file
download: s3://20231205-kubotamai-normal/upload1/files/test_997.file to download1/test_997.file
download: s3://20231205-kubotamai-normal/upload1/files/test_998.file to download1/test_998.file

S3 Express One Zoneでダウンロードした場合の様子。ランダムに処理されている感じです。

download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_450.file to download1/test_450.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_611.file to download1/test_611.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_67.file to download1/test_67.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_106.file to download1/test_106.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_173.file to download1/test_173.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_723.file to download1/test_723.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_702.file to download1/test_702.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_388.file to download1/test_388.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_205.file to download1/test_205.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_918.file to download1/test_918.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_66.file to download1/test_66.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_904.file to download1/test_904.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_144.file to download1/test_144.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_736.file to download1/test_736.file
download: s3://20231205-kubotamai-express--apne1-az4--x-s3/upload1/files/test_418.file to download1/test_418.file

このあたりも何らかで速度向上する仕組みがあるのかもしれません(ドキュメントを探してみよう)

まとめ

途中で流れ作業っぽくなったので飽きてましたが、一応実測してみたら確かに Amazon S3 Express One Zone のほうが読み込みは速いってのは判りました。

ただ速くなるのは小さいサイズの大量のファイルの読み込みなどになりますので、ある程度ファイルサイズが大きいとその恩恵は受けられないのかもしれません。

気になる方は公式ページでもご確認ください。

aws.amazon.com

以上、今回の記事がどなたかの参考になれば幸いです。

最後までお読み頂きありがとうございました\(^o^)/

久保玉井純(執筆記事の一覧)

アプリケーションサービス部

サーバーワークス日本最南端社員。
最近、AWS Authorized Instructor Award 2022で表彰いただきました。引き続きわかりやすいトレーニング提供できるように頑張ります!