AWS Summit Japan 2024 Day1の「Dive deep on Amazon S3」というセッションに参加したのでレポートします!

S3の裏側の仕組み を3層にわけて解説し、高いスケーラビリティ・耐久性・セキュリティ・パフォーマンスをどのようにAWSが実現しているか。
それらの効果を更に上げるため「利用者側でやるべきこと(=ベストプラクティス)」とは何か。

また後半では「超低レイテンシーなストレージクラスであるS3 Express One Zone」「S3の削除保護の方法4つ」の紹介がありました。

このレポートではセッションで語られた内容の概要と、それに関連する公式ドキュメントのリンクをいくつかメモしています。
実際のセッションではスライド投影される内容やドキュメントに書かれていることだけでなく、それに沿った細かい例や考え方、「なぜそうなのか」がスピーカーの言葉により強く伝わってくるので、ぜひ今後の現地参加やオンライン聴講の検討もしていただければと思います。

参加セッション

Dive deep on Amazon S3

  • Level 300: 中級者向け
  • スピーカー 焼尾 徹 アマゾン ウェブ サービス ジャパン合同会社

Amazon S3 は、業界トップクラスのスケーラビリティ、耐久性、セキュリティ、パフォーマンスを提供するクラウドオブジェクトストレージです。このセッションでは、Amazon S3 の基盤となるアーキテクチャを掘り下げ、どのようにしてスケーリングと伸縮自在性を実現しているのかを見ていきます。データ保護方法、データの耐久性に対する考え方や文化、そして新しい Amazon S3 Express One Zone ストレージクラスがどのように一貫したパフォーマンスを実現するかについて知っていただき、利用者の機械学習ワークロードや、データ分析を支える仕組みの理解を深めます。

Amazon Simple Storage Services(S3)とは?

S3はAWSを支える重要な基盤。AIで利用するデータを始め、それに限らずありとあらゆるデータを保存している。S3の歩んできた道のり。

「S3は350以上のマイクロサービスにより実現している」という話もあり、これは昔別のセッションできいたときよりもマイクロサービス数が増えている気がしたので調べてみました。

常に機能追加やアップデートがされているんだなというのがこの側面からも感じられますね!

フロントエンドの理解

いま現在S3はどれだけのリクエストを捌いているのか。マルチパートアップロードの説明と利点。アップロードリクエスト先の分散(DNSの利用)についての話。
利用者側ですべきこれらの考慮は「AWS 共通ランタイム (CRT)」に含まれている。これらは最新のSDKやCLIに組み込まれているので、最新のSDKやCLIを使いましょう。

関連ドキュメント

インデックスの理解

S3には350兆以上のオブジェクトが保存されている。増えていくものに対し容量だけでなくパフォーマンスも確保しなければならない。プレフィックスの偏りなどに対し自動オートスケーリングしている裏側の話など。利用者側でできることとしてキー命名のベストプラクティス紹介。プレフィックスとは?プレフィックス毎にリクエスト上限が決まっているのでベストプラクティスに沿った場合とそうでない場合の受けれるリクエスト数の違いなど。

関連ドキュメント

設計パターンのベストプラクティス: Amazon S3 のパフォーマンスの最適化

ストレージ層の理解

イレブンナインのデータのデータ耐久性をどのように実現しているか。リクエストの生合成チェック。冗長化されたデバイスへの格納、その方式。チェックサム。ストレージクラスの違い、General purpose bucketsとDirectory buckets。

Amazon S3 Express One Zone

単一のAZでデータを保持することで可用性を犠牲にし(同AZからの)高速なスループットを実現できるストレージクラス。その解説とユースケースの紹介。ストレージI/Oの性能が重要となってくる分野(機械学習)における活用。

ゾーンを単一にするだけでなく、権限認証に関してもExpress One Zoneではセッションベースの認証が利用できリクエスト毎に認証が走らないので、オーバーヘッド低減がなされているのが素敵だと思いました。
S3 Express One Zone とは
CreateSession authorization

誤削除に対して

対策として以下の4つの紹介

  • バージョニング
  • レプリケーション
  • オブジェクトロック
  • AWS Backup

AWS Backupを用いた面(=特定のタイミング)でのS3バックアップは特定時点の復旧などに便利なはずで、自分が担当するシステムにも取り込んでおきたいと思いつつ、取り込めていなかったので導入しやすいところから入れて、システムに合わせた復旧も手順化してみようと思います。
特定時点の復旧は「誤削除」への対応だけでなく用途によっては過去や経過の分析にも使えたりしないかなと考えています。

おわりに

S3側の仕組みやベストプラクティスの適用前後の違いが図解で解説されていてわかりやすく、改めてS3側で考慮してくれていること、それに対して利用者側でできること(ベストプラクティス)をまとめて理解することができました。
機械学習をはじめとし、あらゆるところでストレージは明示的にも暗黙的にも利用され、とくにI/Oパフォーマンスの重要性と最適化するための方法が再確認できました。