Amazon Web Services ブログ
予測可能および動的なアクセスパターンに対する Amazon S3 のコスト最適化
このブログは 2021 年 6 月 29 日に Nabil Mohamed (Senior Technical Account Manager)、Bruce Walker (Senior Technical Account Manager)、Jessie Felix (Senior Product Manager with Amazon S3) によって執筆された内容を日本語化したものです。その後、2021 年 11 月にS3 Intelligent-Tiering Archive Instant Access ティアが発表されるなど、Amazon S3 Intelligent-Tiering ではさらにコスト効率を高めることが可能となっています。原文はこちらを参照してください。
あらゆる規模と業種の多くの顧客が、ビジネスとデータの両方が前例のないスケールで成長していると私たちに伝えています。Amazon S3 は、どのような開発者でも、初期投資やパフォーマンスの妥協なしに、Amazon の利点を大規模に活用することを可能にします。顧客は、S3 で得られる弾力性と俊敏性を好んでいます。なぜなら、ビジネスの成長を促進するために、顧客向けの全く新しいアプリケーションや体験の創造に集中できるからです。そして、その成長に伴い、コスト管理とコスト最適化が不可欠となります。顧客は、アプリケーションのパフォーマンスに影響を与えたり、運用の負担を増やしたりすることなく、S3 のコストを最適化するための最良のアプローチを知りたがっています。データレイク、機械学習、衛星画像、DNA配列解析、コールセンターのログ、自動運転車のシミュレーション、さらにはお気に入りのメディアや自宅でのフィットネスコンテンツまで、想像できるあらゆるワークロードが S3 上で実行されています。同時に、組織全体で S3 のストレージコストを最適化するための基本原則は、一度学べば実装するのは難しくありません。移動、分析、またはアーカイブする必要があるデータがある場合でも、S3 にはデータのアクセス、パフォーマンス、およびコスト要件に最適化されたストレージクラスがあります。すべての S3 ストレージクラスは、99.999999999% (イレブンナイン) の耐久性と最高の可用性を実現するように設計されています。
このブログの目標は、予測可能で変化するアクセスパターンを持つワークロードのストレージコストを管理する方法と、コスト削減を実現するための具体的な方法について理解していただくことです。
予測可能なアクセスパターンを持つワークロードの最適化
一定期間後にアクセス頻度が低くなるデータをお持ちですか?例えば、ソーシャルメディアアプリのようなユーザー生成コンテンツを考えてみましょう。私たちはネットワークに動画や写真を共有しますが、アップロード直後は頻繁にアクセスされるものの、数週間後、あるいは数日後や数時間後には、アクセス頻度が低くなります。このようなユースケースでは、多くの顧客はデータがいつアクセス頻度が低くなるかを知っており、S3 標準ストレージクラスから低頻度アクセスやアーカイブ用に最適化された低コストのストレージクラスにデータを移動すべき適切なタイミングを通常特定できます。
予測可能なアクセスパターンを持つ多くの顧客は、アカウント内のすべてのバケットの使用状況を詳細に理解するために、S3 Storage Lens を使い始めます。S3 Storage Lens の高度なメトリクスを有効にしている場合、アクセスが頻繁な、まれな、あるいはほとんどないデータセット (バケット) を特定するためのアクティビティメトリクスにアクセスできます。GET リクエストやダウンロードバイト数などのメトリクスは、データセットが毎日どの程度アクセスされているかを示します。このデータを数ヶ月間にわたって傾向分析し (高度なメトリクスでは長期間のデータ保持が可能)、アクセスパターンの一貫性を理解し、アクセス頻度が低くなったデータセットを特定することができます。
データセットがいつアクセス頻度が低くなるか、またはアーカイブ可能になるかがわかれば、Amazon S3 ライフサイクルルールを簡単に設定して、S3 標準ストレージクラスに保存されているオブジェクトを、データの経過時間に基づいて自動的に S3 標準 – 低頻度アクセス、S3 1ゾーン – 低頻度アクセス、および/または、S3 Glacier ストレージクラスに移行することができます。ライフサイクルポリシーは、AWS マネジメントコンソール、S3 REST API、AWS SDK、または AWS コマンドラインインターフェイス (CLI) で設定および管理可能です。ポリシーはプレフィックスレベルまたはバケットレベルで指定します。例えば、オブジェクトを作成してから 30 日後に S3 標準 – 低頻度アクセスストレージクラスに移行したり、1 年後に S3 Glacier ストレージクラスにアーカイブしたりすることを選択できます。
未知または変化するアクセスパターンを持つワークロードの最適化
アクセスパターンが未知または変化するデータがある場合はどうすればよいでしょうか?多くの顧客は、Amazon S3 Intelligent-Tiering (S3 Intelligent-Tiering) を使用して共有データセットを保存しています。このデータセットは、分析、機械学習、リアルタイムモニタリング、その他のデータレイクのユースケースのために、異なるアプリケーション、チーム、個人によって集約されアクセスされます。これらのユースケースでは、組織内の多くのユーザーが異なるツールを使用して S3 にアクセスすることが一般的です。例えば、Amazon Athena を使用すれば標準 SQL で S3 のデータを簡単に分析できますし、Amazon Redshift Spectrum を使用してデータのロードや変換なしに S3 のペタバイト規模のデータに対してクエリを実行することもできます。これらのユースケースの多くでは、年間を通じてアクセスパターンが大きく変動し、ほとんどまたは全くアクセスがない状態から、1 ヶ月に複数回データが読み取られる状態まで幅広く変化する可能性があります。これが S3 標準 – 低頻度アクセスストレージクラスに保存されている場合、取り出し料金が発生する可能性があります。
アクセスパターンが変化するユースケースを持つ顧客や、カスタマイズされた階層化ルールを管理したくない顧客は、S3 Intelligent-Tiering をデフォルトのストレージクラスとして使用することを検討してください。S3 Intelligent-Tiering は、アクセスパターンが変化しても、パフォーマンスへの影響なし、運用オーバーヘッドなし、取り出し料金なしで、コスト削減の方法を提供します。これは、4 つのアクセス階層にオブジェクトを保存することで機能します:高頻度アクセスと低頻度アクセス用に最適化された 2 つの低レイテンシーアクセス階層、および非同期アクセス用に設計された 2 つのオプションのアーカイブアクセス階層です。(訳註: 現在の S3 Intelligent-Tiering にはアーカイブインスタントアクセス階層が追加されており、5 つのアクセス階層を利用することが可能です)
オブジェクトを S3 Intelligent-Tiering にアップロードまたは移行すると、自動的に高頻度アクセス階層に保存されます。S3 Intelligent-Tiering は、アクセスパターンを監視し、30 日間連続でアクセスされていないオブジェクトを低頻度アクセス階層に移動させることで機能します。また、1 つまたは両方のオプションのアーカイブアクセス階層を有効にすることもできます。アーカイブアクセス階層を有効にすると、S3 Intelligent-Tiering は 90 日間連続でアクセスされていないオブジェクトをアーカイブアクセス階層に自動的に移動します。180 日間連続でアクセスがない場合、S3 Intelligent-Tiering はオブジェクトをディープアーカイブアクセス階層に移動します。後でオブジェクトに再びアクセスされた場合、高頻度アクセス階層に戻されます。
このアプローチにより、考える必要なく、ストレージコストを最大 95% 削減することができます。S3 Intelligent-Tiering にはオブジェクト数に応じた小額の月次監視料金がかかりますが、これはオブジェクトのサイズが大きくなるほど、節約額が大きくなることを意味します。128 KB 未満のオブジェクトは自動階層化の対象外であるため、S3 標準ストレージクラスに保持することをお勧めします。顧客が S3 Intelligent-Tiering を好む理由は、取り出し料金がなく、アクセスパターンが変化しても予期せぬストレージ料金の増加がないためです。
ストレージ節約シナリオ
要約すると、S3 Storage Lens と S3 ライフサイクルポリシーを組み合わせて使用することで、オブジェクトをより安価なストレージクラスに移動する適切なタイミングを知っているか、容易に特定できる場合に、最大のストレージコスト削減を実現できます。また、アクセスパターンが未知または変化するデータに対しては、S3 Intelligent-Tiering クラスを使用することで最大のストレージコスト削減を実現できます。以下では、米国東部 (バージニア北部) リージョンにある、合計 1 PB のストレージと 1 億個のオブジェクトを持つバケットの 2 つの異なるワークロードを例に挙げ、アクセスパターンに適したストレージクラスを選択することで得られる潜在的なストレージコスト削減効果を示します。価格については、S3 の公開価格を参照してください。また AWS Pricing Calculator for Amazon S3 を使用して、ワークロードの S3 ストレージコストを見積もることもできます。
最初のシナリオでは、オンラインビデオプラットフォームのメディアアセットを作成後 30 日で S3 標準 – 低頻度アクセスストレージクラスに移動し、オブジェクトの 10% が月に 1 回アクセスされると仮定します。1 年間で、このユースケースでは S3 標準 – 低頻度アクセスを使用した場合 $90,583 (33.3%)、S3 Intelligent-Tiering を使用した場合 $89,711 (33.0%) のストレージコスト削減が達成されます。アクセスパターンが変化しないことが分かっている場合、S3 標準 – 低頻度アクセスストレージクラスを使用することで、このユースケースでの最低ストレージコストを実現できます。アクセスパターンの予測可能性が不確かな場合でも、S3 Intelligent-Tiering を使用することで、取り出し料金の急増を心配することなく、大幅なストレージコスト削減を実現できます。
予測可能なアクセスパターン
年間コスト | S3 標準 | 標準 – 低頻度アクセス | S3 Intelligent-Tiering (アーカイブ無効) |
ストレージコスト | $270,999 | $166,762 | $178,288 |
PUT リクエスト* | $500 | $500 | $500 |
GET リクエスト | $48 | $120 | $48 |
ライフサイクル移行リクエスト* | NA | $1,000 | NA |
データ取り出しリクエスト | Free | $12,582 | Free |
モニタリングおよびオートメーション | NA | NA | $3,000 |
トータルコスト | $271,547 | $180,964 | $181,836 |
* PUT リクエストとライフサイクル移行リクエストは、オブジェクトのアップロードまたは移行時に発生する一回限りの料金です
2 つ目のシナリオでは、データウェアハウジングのデータセットを S3 Intelligent-Tiering にアップロードするとします。このユースケースでは、全オブジェクトの 30% が、組織全体での計画外の分析やレポーティングワークフローのために、月に少なくとも 4 回アクセスされると仮定します。1 年間で、このユースケースでは S3 Intelligent-Tiering を使用することで 67,273 ドル (24.7%) のストレージコスト削減が達成されます。このようなユースケースは、取り出し料金によって S3 標準よりも高くなる可能性があるため、S3 標準 – 低頻度アクセスには適していません。S3 Intelligent-Tiering を使用すれば、アクセスパターンが変化しても、パフォーマンスへの影響や運用のオーバーヘッド、取り出し料金なしで、コストを削減できます。
アクセスパターンの変更
年間コスト | S3 標準 | S3 Intelligent-Tiering (アーカイブ無効) | 標準 – 低頻度アクセス |
ストレージコスト | $270,999 | $200,198 | $166,762 |
PUT リクエスト* | $500 | $500 | $500 |
GET リクエスト | $576 | $576 | $1,320 |
ライフサイクル移行リクエスト* | NA | NA | $1,000 |
データ取り出しリクエスト | Free | Free | $138,412 |
モニタリングおよびオートメーション | NA | $3,000 | NA |
トータルコスト | $271,547 | $204,274 | $307,994 |
* PUTリクエストとライフサイクル移行リクエストは、オブジェクトをアップロードまたは移行する際の一回限りの料金です
多くの場合、顧客は長期間アクセスされていないデータセットのサブセットに対して、自動的にストレージコストをさらに削減したいと考えています。例えば、研究プロジェクトや機械学習モデルの再トレーニングにのみ時々使用される過去のデータセットがあります。このようなユースケースでは、データをアーカイブし、即座にアクセス可能になるまで数分から数時間待つことを許容できるかもしれません。これがあなたのユースケースに当てはまるなら、さらなるコスト削減のために S3 Intelligent-Tiering アーカイブアクセス階層を有効にすることをお勧めします。
年間コスト | S3 Intelligent-Tiering (アーカイブ無効) | S3 Intelligent-Tiering (アーカイブ有効) |
ストレージコスト | $200,198 | $158,501 |
PUT リクエスト* | $500 | $500 |
GET リクエスト | $576 | $576 |
ライフサイクル移行リクエスト* | NA | NA |
データ取り出しリクエスト | Free | Free |
モニタリングおよびオートメーション | $3,000 | $3,000 |
トータルコスト | $204,274 | $162,577 |
* PUTリクエストとライフサイクルリクエストは、オブジェクトをアップロードまたは移行する際の一回限りの料金です
* S3 Intelligent-Tiering (アーカイブ有効) の前提条件:オブジェクトの 30% を高頻度アクセス階層に、20% を低頻度アクセス階層に、25% をアーカイブアクセス階層に、25% をディープアーカイブアクセス階層に保存
最後に覚えておくべきいくつかのこと:
- オブジェクトサイズ: S3 Intelligent-Tiering は任意のサイズのオブジェクトに使用できますが、128 KB 未満のオブジェクトは高頻度アクセス階層に保持されます。アーカイブアクセス階層またはディープアーカイブアクセス階層にアーカイブされた各オブジェクトについて、Amazon S3 はオブジェクト名とその他のメタデータ用に 8 KB のストレージ (S3 標準ストレージクラス料金で課金) と、インデックスおよび関連メタデータ用に 32 KB のストレージ (S3 Glacier Flexible Retrieval および S3 Glacier Deep Archive ストレージクラス料金で課金) を使用します。これにより、すべての S3 オブジェクトのリアルタイムリストまたは S3 インベントリレポートを取得できます。
- オブジェクトの寿命: S3 Intelligent-Tiering は 30 日以上の寿命を持つオブジェクトに適しており、このストレージクラスを使用するすべてのオブジェクトは最低 30 日が課金対象となります。
- 耐久性と可用性: Amazon S3 Intelligent-Tiering は 99.9% の可用性と 99.999999999% の耐久性を目指して設計されています。
- 価格: 月間のストレージ、リクエスト、データ転送に対して料金を支払います。S3 Intelligent-Tiering を使用する場合、モニタリングおよびオートメーションのために小額のオブジェクト単位の月額料金を支払います。S3 Intelligent-Tiering に取り出し料金はなく、階層間のデータ移動に対する料金もありません。高頻度アクセス階層のオブジェクトは S3 標準と同じ料金で課金され、低頻度アクセス階層のオブジェクトは S3 標準 – 低頻度アクセスと同じ料金で課金され、アーカイブアクセス階層のオブジェクトは S3 Glacier Flexible Retrieval と同じレートで課金され、ディープアーカイブアクセス層のオブジェクトは S3 Glacier Deep Archive と同じレートで課金されます。
- API と CLI によるアクセス: S3 CLI と S3 API を使用して、INTELLIGENT_TIERING ストレージクラスで S3 Intelligent-Tiering を利用できます。また、特定のバケットに対して PUT、GET、DELETE 設定 API を使用して S3 Intelligent-Tiering アーカイブを設定することもできます。
- サポートする機能: S3 Intelligent-Tiering は、オブジェクトのアクセス層を報告する S3 インベントリや、データを任意の AWS リージョンにレプリケートする S3 プリケーションなどの機能をサポートしています。
結論
このブログでは、予測可能なアクセスパターンを持つユースケースと、変化するアクセスパターンを持つユースケースのストレージコストを最適化する方法について説明します。多くの場合、適切なストレージクラスを選択することで、お客様のストレージコストを最大 95% 削減できることがわかっています。これを実現するために、一部のお客様は異なるバケット間でカスタマイズされた階層化 S3 ライフサイクルポリシーを構築することを好み、多くのお客様は自動的にストレージコストを節約できる簡単な方法として S3 Intelligent-Tiering を使用しています。
重要なのは、データのアクセスパターンとビジネスニーズに基づいて適切なアプローチを選択することです。始める際には、ワークロードに最適なアプローチを決定するために、オブジェクトの以下のプロパティを考慮してください:
判断基準 | S3 Intelligent-Tiering の検討 | ストレージクラスとライフサイクル管理の検討 |
Overhead | ストレージの最適化にほとんどまたは全くエンジニアリングリソースを割り当てる意思がない | ストレージの最適化にリソースを割り当てる意思がある |
アクセス頻度 | データレイク、ビジネスインテリジェンス、機械学習などの未知または変化するアクセスパターン | ロングテールメディア、バックアップ、災害復旧などの予測可能なアクセスパターン |
オブジェクトのサイズ | S3 Intelligent-Tiering は小額の階層化料金を請求し、自動階層化の対象となる最小オブジェクトサイズは 128 KB です。より小さなオブジェクトも保存できますが、常に高頻度アクセス階層の料金で課金されます。 | 標準 – 低頻度アクセスストレージクラスと 1 ゾーン – 低頻度アクセスストレージクラスの最小課金対象オブジェクトサイズは 128 KB、S3 Glacier Deep Archive ストレージクラスの最小課金対象オブジェクトサイズは 40 KB です。 |
オブジェクトの寿命 | 30 日以上保存される長寿命オブジェクトに最適。 | S3 標準は 30 日以内に削除される短寿命オブジェクトに最適。 標準 – 低頻度アクセスストレージクラスと 1 ゾーン – 低頻度アクセスストレージクラスは 30 日以上保存される長寿命オブジェクトに最適、S3 Glacier Flexible Retrieval は 90 日以上、Glacier Deep Archive は 180 日以上の保存に最適 |
予測可能で変化するアクセスパターンを持つワークロードのストレージコストを制御および最適化する方法に関するこのブログをお読みいただき、ありがとうございます。Amazon S3 バケットの数が増加し、数十または数百のアカウントにまたがっている場合は、「5 Ways to reduce data storage costs using Amazon S3 Storage Lens (Amazon S3 Storage Lens を使用してデータストレージコストを削減する 5 つの方法)」というブログも併せてお読みください。これにより、S3 Storage Lens を使用して典型的なコスト削減の機会を特定する方法と、それらのコスト削減を実現するための変更を実施する方法について基本的な理解を得ることができます。