こんにちわ!サーバーワークス日本最南端社員の久保玉井(くぼたまい)です。
先週、ラスベガスで開催された re:Invent2023 に参加してきたのですが、その中の発表で「 Amazon S3 Express One Zone 」なる新しい S3 のストレージクラスが発表されました。
「ちょっ速になる!」という印象で、気になったので本当に速いのか計測をしてみました。
この記事がどなたかのお役に立てれば嬉しいです。
- Amazon S3 Express One Zone とは?
- 読み込み速度を比較してみた
- 計測結果は?本当に速いの?
- まとめ
Amazon S3 Express One Zone とは?
re:Invent2023 で新たに発表された S3 のストレージクラスですね。
詳細な説明のブログ記事もAWSから公開されていました。
S3 Standard ストレージ クラスよりも最大 10 倍優れたパフォーマンスを提供するように設計されており、一貫した 1 桁ミリ秒のレイテンシーで 1 秒あたり数十万のリクエストを処理するため、最も頻繁に使用するストレージ クラスに最適です。
また小さいオブジェクトの読み込みに効果を発揮するとの事。
S3 Express One Zone は一貫して非常に低い遅延を実現しているため、小さなオブジェクトを S3 Standard と比較して最大 10 倍高速に読み取ることができます。
ただ名前に記載されている「 One Zone 」のとおり、AZ障害が発生するとデータ損失もありえるとの事です。
耐久性 –万が一、AWS アベイラビリティーゾーンの全体または一部が紛失または破損した場合、ワンゾーンのストレージクラスのデータが失われる可能性があります。
現地で発表され、ブログ記事も読みここで気になったことがあります。
どんだけ速いんだろう? S3 Standard ストレージクラスと比較してみたい!
ということで計測比較をしてみました。
読み込み速度を比較してみた
気になったらすぐ試せるのがクラウドのメリットですね。 今回は以下の内容で速度計測をしてみました。
- S3 Standard ストレージクラスで新規にS3バケットを作成
- S3 Express One Zone 用のディレクトリバケットも作成
- VPC を作成し、S3 および S3 Express One Zone 用のエンドポイントをそれぞれ作成
- EC2 インスタンスを立ち上げて ファイルを生成。その後そのファイルをそれぞれのバケットへアップロード
- 別途 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 のほうが読み込みは速いってのは判りました。
ただ速くなるのは小さいサイズの大量のファイルの読み込みなどになりますので、ある程度ファイルサイズが大きいとその恩恵は受けられないのかもしれません。
気になる方は公式ページでもご確認ください。
以上、今回の記事がどなたかの参考になれば幸いです。
最後までお読み頂きありがとうございました\(^o^)/
久保玉井純(執筆記事の一覧)
アプリケーションサービス部
サーバーワークス日本最南端社員。
最近、AWS Authorized Instructor Award 2022で表彰いただきました。引き続きわかりやすいトレーニング提供できるように頑張ります!