Amazon S3のコストやパフォーマンスを最適化するには #AWSreInvent

Amazon S3はほぼすべてのサービスで利用されているといってもよい。S3には様々なデータ保存方式が用意されていますので、データアクセスの特性に応じて使い分けるとコストの最適化ができます。どのような基準で使い分けするとよいのか見ていきましょう。
2023.12.25

こんにちは。ゲームソリューション部の出村です。

AWS re:Invent 2023のセッションである「Optimizing storage price and performance with Amazon S3」のレポートをお届けします。

概要

Effective storage performance and cost optimization requires different approaches depending on workload requirements. With Amazon S3, you can cost-effectively store and retrieve any amount of data from anywhere. Learn the key considerations for choosing the optimal Amazon S3 storage classes that are cost optimized for your workloads, from data lake analytics to large-scale machine learning training. Explore how Amazon S3 powers some of the most performance-sensitive workloads in the cloud at a low cost. Finally, discover how Amazon S3 features can help reduce storage costs, improve workload performance, and reinvest cost savings to drive innovation and business transformation.

スピーカー

  • Andrew Kutsy, Producdt Manager, Amazon S3, AWS
  • Carl Summers : Principal Engineer, Amazon S3, AWS
  • Nova DasSarma : System Lead, Anthropic

動画

内容について

このセッションでは、コスト最適化とパフォーマンス最適化という2つの最適化の話がありました。本エントリーでは、コスト最適化を取りあげていきます。

最適化は最初にユースケースを理解した上で要件を定義し、ストレージや開発状況などを理解し、最後に最適化して計測を行います。この話はS3に限った話ではありません。

その際、顧客は何を求めたのでしょうか。S3のオブジェクトの利用状況を可視化し、適切な粒度でデータを分析する機能、そして有意義な動作津を得るための機能を求めました。

そのためツールとして、ストレージの利用状況を可視化するAmazon S3 Storage Lensを発表しました。Amazon S3 Storage Lensを利用すると組織全体のストレージの利用状況を単一画面でみることができ、階層深く奥まで見ることができます。また、このツールは無料で入手できます。

S3 Storage Lensでは、コスト、データ保護、アクセス制御、パフォーマンスといった事が分析できます。

S3 Storage LensのメトリクスがCloudWatchからも見られるようになっています。

これによって、CloudWatchを利用して警告を出力したり、トリガーアクションが設定できたりします。他にもCloudWatchのAPIを通してメトリクスを取得できます。

次にS3をオブジェクトレベルで調べていく方法を解説します。その際、S3 Inventoryが利用できます。例えばAmazon Athenaを使って条件に該当するオブジェクトの一覧を出力するといった使い方ができます。

コスト最適化の前にデータの特性を把握しておきます。データの特性には2つあり、1つは、”よく知っているもしくは予測可能なアクセスパターンのデータ”、もう一つは”よく知らない、もしくは予測不可能なアクセスパターンのデータ”です。

よく知っているもしくは予測可能なアクセスパターンのデータに対するアクセスをみていきます。一例として、家族や仲間で見る写真を例に挙げると、スライドのグラフにあるように当初は頻繁にアクセスされていますが、時間が経つにつれてアクセスされる回数が減っています。

このようなデータはアクセス頻度によって利用するサービスを変えるのがよいでしょう。スライドにあるようにアクセス頻度に応じてS3のサービスを使い分けます。これによりコストを抑えられます。

Glacierも、アクセス頻度に応じてサービスを使い分けてコストを削減できます。データ保護やバックアップのためにGlacierを利用する際にも、さまざまな選択肢をAWSは提供しています。

S3ストレージのどのサービスを選択するかを決める要素は3つあります。アクセスする頻度、保存期間、取得要件です。

次にS3のサービス間のデータ移行についてみてきます。オブジェクトサイズとライフサイクルとのコストをS3スタンダードとS3Glacier Deep Archiveで比較しています。

オブジェクトサイズが大きくなるほど、損益分岐点は低くなります。0.125MBであれば、20ヶ月であるのに対し、1MBでは1.5ヶ月となります。

データアクセスの規則性が分かっていれば、S3ライフサイクルポリシーを適用して保存箇所を移行させることができます。このスライドにあるのはその一例となります。

大多数のデータでは、アクセスパターンが分からないです。そのため、いつアクセスされるか予測するのは困難です。

そのようなアクセス時期の予測不可能なデータをコストを最適化して保管するために、S3 Intelligent Tiering StorageクラスをAWSは用意しました。これを利用することによって、アクセス頻度によって自動的に格納されるストレージが変更されます。

最後に

普段何気なく利用しているS3ですが、長期間運用しているとデータ量が増え、コストについても無視できない金額になってきます。また、データ量が増えるにつれ、アクセス速度も遅くなってきたということもあるかもしれません。

その対策として、S3では定期的に格納しているデータの見直しをします。アクセスパターンが分かっていれば、その格納先を変更することで使い勝手がそのままでコスト削減も可能かもしれません。この機会にS3に格納されているデータを見直してみてはいかがでしょうか。