![[レポート] Amazon S3のパフォーマンスとアーキテクチャと最適化戦略を深掘りするセッションに参加しました #AWSreInvent #STG335](https://images.ctfassets.net/ct0aopd36mqt/4pUQzSdez78aERI3ud3HNg/fe4c41ee45eccea110362c7c14f1edec/reinvent2025_devio_report_w1200h630.png?w=3840&fm=webp)
[レポート] Amazon S3のパフォーマンスとアーキテクチャと最適化戦略を深掘りするセッションに参加しました #AWSreInvent #STG335
はじめに
皆様こんにちは、あかいけです。
AWS re:Invent 2025に参加しており、
「Amazon S3 performance: Architecture, design, and optimization」というセッションを聞いてきました。
Amazon S3は多くのシステムで日常的に使用されているサービスですが、その内部アーキテクチャやパフォーマンス最適化の仕組みについて深く理解する機会は意外と少ないのではないでしょうか。
このセッションでは、S3の内部システムがどのように大規模なスループットを処理し、同時リクエストを管理しているのかを詳しく解説してくれたので、その内容をまとめてみました。
セッション概要
タイトル
Amazon S3 performance: Architecture, design, and optimization [SIMULCAST] (STG335-SC)
概要
Go behind the scenes of Amazon S3 performance architecture while learning practical optimization strategies. We'll explore how S3's internal systems manage massive throughput, handle concurrent requests, and balance loads across its distributed infrastructure. Dive deep into the technical foundations - from request routing and partitioning strategies to caching mechanisms - that enable S3 to power demanding workloads like real-time analytics and ML training. You'll learn how to leverage this architectural understanding to make informed storage class selections, implement performance-enhancing patterns, and design applications that maximize S3's capabilities.
Amazon S3 のパフォーマンスアーキテクチャの舞台裏を紐解きながら、実践的な最適化戦略を学びます。S3 の内部システムが、膨大なスループットを管理し、同時リクエストを処理し、分散インフラストラクチャ全体で負荷分散を行う仕組みを探求します。リクエストルーティングやパーティショニング戦略からキャッシュメカニズムまで、S3 がリアルタイム分析や機械学習トレーニングといった要求の厳しいワークロードを処理できるようにする技術基盤を深く掘り下げます。このアーキテクチャに関する知識を活用して、情報に基づいたストレージクラスの選択、パフォーマンス向上パターンの実装、そして S3 の機能を最大限に活用するアプリケーション設計を行う方法を学びます。
スピーカー
- Ian Mc Garry (Director, Software Development, Amazon Web Services)
- Devabrat Kumar (Principal Product Manager, Amazon Web Services)
セッション情報
- レベル: 300 - Advanced
- セッションタイプ: Breakout session
- トピック: Architecture, Storage

セッション内容
アジェンダ
セッションは大きく2つのパートで構成されていました。
-
S3アーキテクチャを理解してハイパフォーマンスアクセスを実現する
- 大規模スループットの最適化
- 同時リクエストの管理
- AWSツールを活用した簡素化
-
Amazon S3 Express One Zoneを理解する
- アーキテクチャ上の考慮事項
- 主要なメリット

ユースケース例
セッションの冒頭では、S3の高スループットが求められる代表的なユースケースが紹介されました。
大規模スループットと同時リクエストが必要なユースケース
- データレイク分析
- データマイグレーション
- 自動運転車両シミュレーション
S3 Express One Zone向けのユースケース
- インタラクティブクエリ
- 機械学習トレーニング
- 機械学習モデルのロードと推論

Amazon S3のスケール
Amazon S3の規模感を示す数字が紹介されました。
- 500兆以上のオブジェクトを保存
- 数百エクサバイトのデータ
- 秒間2億リクエスト以上を処理
- 100万以上のデータレイクが稼働

S3の3つの主要サブシステム
S3の内部アーキテクチャは3つの主要サブシステムで構成されています。
- Front End: リクエストルーティングと処理
- Index: キー/バリューマッピング、オブジェクトメタデータからバイトへの変換
- Storage: ディスク上にバイトを永続的に保存

並列化によるスループット向上
シングルコネクションの課題
単一のコネクションでデータを転送する場合、500MBのファイルを100MB/sの速度で転送すると5秒かかります。

並列化のアプローチ
S3のスケールを活用するために、以下の並列化戦略が推奨されています。
- マルチパートアップロードで書き込みを並列化
- Range GETで読み取りを並列化
- 複数のIPにリクエストを分散し、S3の広大なフリートを活用
- AWS Common Runtime (CRT)ライブラリを使用

並列書き込みによるスループット向上
500MBのファイルを100MBずつ5つのパートに分割し、それぞれ100MB/sで並列転送すると、合計500MB/sのスループットを達成し、1秒で転送完了できます。

S3マルチパートアップロードのメリット
マルチパートアップロードには以下のメリットがあります。
- スループットの向上
- ネットワーク問題からの迅速なリカバリ
- アップロードの一時停止と再開が可能
- 作成しながらオブジェクトをアップロード可能

並列読み取りによるスループット向上
読み取り時も同様に、Range GETを使用して並列化することでスループットを向上できます。

ListParts APIとRange GETのメリット
- スループットの向上
- ネットワーク問題からの迅速なリカバリ
- 大きなオブジェクトの処理を簡素化

S3フリート全体へのリクエスト分散
S3はDNSを使用して、リクエストを広大なサーバーフリート全体に分散しています。digコマンドで確認すると、同じバケットに対するDNSクエリでも複数の異なるIPアドレスが返されることがわかります。
これにより、単一オブジェクトに対しても数百GB/sの集約帯域幅にバーストすることが可能です。

AWS Common Runtime (CRT)
AWSは高パフォーマンスアクセスのためのツールとして、 AWS Common Runtime (CRT) を提供しています。
CRTのメリット
- S3のベストプラクティスがコードに実装済み
- マルチパートアップロードの自動化
- ダウンロード時のRange GETの並列化
- 複数IPを使用したビルトインリトライロジック

CRTの設定例
s3CrtAsyncClientBuilder.targetThroughputGbps(20.0)
aws configure set default.s3.preferred_transfer_client crt
aws configure set default.s3.target_bandwidth 20Gb/s

CRTと統合されているクライアント
- Mountpoint for Amazon S3(Container Storage Interface (CSI)ドライバーを含む)
- 複数のAWS SDK(Java、C++)
- Trn1、P4d、P5 EC2インスタンスタイプでのAWS CLIとBoto3

同時リクエストの管理 - S3プレフィックスの理解
S3プレフィックスとは
S3プレフィックスは、バケット名の後に続く任意の文字列です。

高リクエストレートへのスケーリング
- S3は高リクエストレートに自動的にスケール
- アプリケーションはパーティション化されたS3プレフィックスごとに少なくとも3,500 PUT/sまたは5,500 GET/sを達成可能
- S3バケットに10個のプレフィックスを作成すれば、55,000 GET/sまで読み取りパフォーマンスをスケール可能

キーネーミングのベストプラクティス
プレフィックスの分割方法によって、パフォーマンスが大きく変わります。
日付をキー名の左側に配置した場合の問題
reinvent-bucket/day1というプレフィックスで開始- SPLITにより
prefix1、prefix2などに分割され、それぞれ5,500 GET/sを処理 - 合計で22,000 TPSを達成
- しかし、day2に移行するとday1のパーティションは未使用になり、day2の新しいパーティションを分割する必要がある
- 負荷が持続すると503エラーが発生する可能性


日付をキー名の右側に配置した場合(推奨)
reinvent-bucket/prefixで開始し、日付を右側に配置- パーティションが分割されても、新しい日付のデータも同じパーティションで処理可能
- より効率的なスケーリングが実現

Amazon S3 Express One Zone
セッションの後半では、S3 Express One Zoneについて詳しく解説されました。

S3 Express One Zoneのメリット
- 1桁ミリ秒のデータアクセスを実現
- ディレクトリバケットあたり200万GET/sまでスケール
- appendとrenameの差別化機能
- S3 Standardと比較して最大10倍のデータアクセス速度向上

S3 Express One Zoneのユースケース
- MLトレーニング: TB/sスケールで数百万TPS
- インタラクティブクエリ: 低レイテンシアクセス
- ログとメディアストリーミング: appendとrenameを活用
- モデルロード: 100,000+ GET/sへのバースト
- 頻繁にアクセスされるデータのキャッシング

顧客事例: Tavily
"Amazon S3 Express One Zoneは、スケールでのキャッシング方法を変革しました。数百万リクエストにわたってレイテンシと信頼性を向上させながら、6倍以上のコスト削減を達成しました。"
- Tomer Weiss, Data Scientist, Tavily

S3 Express One Zoneのアーキテクチャ上の考慮事項
- ワンゾーンアーキテクチャ: ストレージとコンピュートを同一ゾーンに配置
- S3ディレクトリバケット: 高トランザクションワークロードを実現
- セッションベースアクセス: 高速な認証

ワンゾーンアーキテクチャ
- シングルアベイラビリティゾーンのストレージクラス
- より高速なアクセス
- AZの配置はネットワークレイテンシに影響(ただしネットワークコストには影響なし)

S3ディレクトリバケット
汎用バケットとディレクトリバケットのスケーリング特性の違い
- 汎用バケット: プレフィックスごとにスケーリング、負荷に応じて段階的にTPSを追加
- ディレクトリバケット: バケット全体でスケーリング、一度にすべてスケール

ディレクトリバケットの特徴
- インデックスが階層的(汎用バケットのフラットな名前空間とは異なる)
- LISTの結果はソートされない(汎用バケットの辞書順ソートとは異なる)

セッションベース認証
S3:CreateSession APIを使用したセッションベース認証
- 認証レイテンシをすべてのリクエストで償却
- リクエストパフォーマンスを向上
- AWS SDKによって自動化

S3 Express One Zone - パフォーマンスのためのアーキテクチャ
最適なパフォーマンスを実現するための3つのポイント
- ディレクトリバケットを使用
- ストレージとコンピュートを同一ゾーンに配置
- SDKによる高速アクセスを活用(セッションベース認証)

S3 Express One Zoneのまとめ
- 高TPS、低レイテンシアクセスをそのまま実現
- S3 Standardと比較して最大10倍のデータアクセス速度向上
- MLトレーニングやインタラクティブ分析など、リクエスト集中型の処理やレイテンシに敏感なアプリケーションに最適

全体のまとめ (Key Takeaways)
- アプリケーションの要件(レイテンシ、リクエストレート、スループット)を考慮する
- 要件に基づいてS3 Express One ZoneまたはS3 Standardを選択
- AWSツール(例: AWS CRT) を使用して自動最適化の恩恵を受ける

さいごに
以上、「Amazon S3 performance: Architecture, design, and optimization」セッションのレポートでした。
S3は普段から当たり前のように使っているサービスですが、その内部アーキテクチャを理解することで、より効果的にパフォーマンスを引き出せることがわかりました。
今後のS3の設計では、内部構造も意識した設計を行っていきましょう。








