Amazon S3 Express One Zone にディープダイブ #AWSreInvent

2023.12.16

re:Invent 2023 の Breakout セッションの 1 つ「Deep dive on Amazon S3 Express One Zone storage class」のレポートです。個人的な見どころを中心に紹介します。ご興味あれば公開されているセッション動画をご視聴ください。

セッション概要

以下は機械翻訳です。

Amazon S3 Express One Zoneストレージクラスは、一貫した1桁ミリ秒のレイテンシと、頻繁にアクセスされるデータセットのために毎分数百万のリクエストに拡張する能力を必要とするパフォーマンスクリティカルなアプリケーションのために、最速かつ低レイテンシのクラウドオブジェクトストレージの1つを提供します。本セッションでは、この新しい単一のアベイラビリティゾーンのストレージクラス、新しいS3ディレクトリバケット、そしてコンピュートリソースをより効率的に使用し、TCOを削減するために同じAWSアベイラビリティゾーンにストレージとコンピートを配置する方法について学びます。さらに、Pinterestが最も重要なアプリケーションの1つのレイテンシをどのように改善したかを聞くことができます。

オンデマンド動画

見どころまとめ

S3 Express One Zone の登場背景

S3 バケットに対してアクセススピードが必要になった背景を説明されていました。S3 Express One Zone は従来の保存単価が安くなるストレージクラスとは毛色が違って、低レイテンシー、高頻度アクセス向けの尖った性能のストレージクラスなので登場背景が気になるところです。

ペタバイト級のデータに対してスキャンを行うと テラ bps のスループットに達することがある。

ビデオ編集や、インタラクティブな分析などではジョブの実行時間や、クエリの時間に影響するため低レイテンシーを必要とするアプリケーションが数多くある。

データパイプラインのケースだと、ストレージの待機時間を短縮するために、独自のキャッシュを利用したりしている。

大容量のデータだと S3 を利用するケースが多いですが、その S3 に置いたデータに対してパフォーマンスを求める声が増えてきたのでしょうね。

ユースケース

低レイテンシー、高頻度アクセス向けの S3 Express One Zone ストレージクラスの登場で、従来抱えていた問題がどう解決できるかユースケースを交えて説明されていました。

データパイプラインのケースならストレージとのアップロード、ダウンロードの待機時間が減り、実行時間を圧縮できる。たしかにそれはそう。

こちらが興味深かったです。コンピュートリソースのコストを削減できるというお話です。AI/ML トレーニングで GPU インスタンス、HPC でハイスッペックなインスタンスを複数台起動することになります。S3 に置いたデータとのやり取りが速くなれば、処理も速く終わり、お高いインスタンスを起動している時間を減らすことにも繋がりますね。データソースに S3 を利用していて、ストレージ性能がボトルネックだった場合は顕著に違いがでそうです。

アーキテクチャ

サービスの裏側はどうなってるのかが気になりますね。Deep Dive セッションはこのあたりを語ってくれるから好きです。

データはシングル AZ 保存

S3 Express One Zone の S3 バケットはディレクトリバケットと呼ばれるのですが、ディレクトリバケットはシングル AZ にオブジェクトを冗長化して保存していました。名前のとおり(One Zone)ではありますが、これによりレイテンシーが最小限になる設計のようです。 重要なこととして説明されていたのは、1 つの AZ 障害でデータをロストする可能性がある点です。

スケール方法の違い

従来からある S3 バケット(汎用バケット)は 負荷がかかると段階的にスケールするが、ディレクトリバケットは一気に数十万 トランザクション/sec までスケールする。

私は S3 バケットへのリクエスト受付時のスケーリング方式を意識する機会がなく良い勉強になりました。ドキュメントを確認してみると、即座にスケーリングはしなく、スケールが追いつかなければ 503 エラーを返す旨の記述がありました。より良い設計のために抑えておくべきポイントでした。

The scaling, in the case of both read and write operations, happens gradually and is not instantaneous. While Amazon S3 is scaling to your new higher request rate, you may see some 503 (Slow Down) errors.

Best practices design patterns: optimizing Amazon S3 performance - Amazon Simple Storage Service

おわりに

馴染みのある従来からある S3 バケットは汎用バケットと呼ばれ、S3 Express One Zone のバケットはディレクトリバケットと呼ばれるようになったことを覚えておきたいです。

また、S3 バケットのスケーリング方式の違いを学べて勉強になりました。Mountpoint for Amazon S3 で S3 バケットを EC2(ParallelCluster) にマウントして、ゲノム解析のワークロードでの利用を検討していました。リファレンスゲノムのような 1 ファイルのサイズがある程度大きいものは汎用バケットで問題なさそうです。ゲノムの DB ファイルで小さなオブジェクトを高頻度で参照するようなケースだと、S3 Express One Zone を採用する価値がありそうです。ユースケースに応じたバケットの使い分け意識した設計をしていきたいと思います。