Amazon Web Services DynamoDB は、Web、モバイル、IoT、ゲーム アプリケーションなど、低レイテンシのデータ アクセスを必要とするアプリケーションに最適な NoSQL データベース サービスです。大量のデータを迅速かつ効率的に処理することで、アプリケーションの耐久性が向上します。その機能には、Web アプリケーション用の組み込みキャッシュ、セキュリティ、およびバックアップ サポートが含まれます。 AWS DynamoDB は ACID トランザクションをサポートしているため、エンタープライズレベルで拡張でき、ビジネスクリティカルなアプリケーションの開発が可能になります。
AWS DynamoDB には無料利用枠がありますが、有料プランの価格は次の 6 つの要素に基づいて決まります。
- データ保存容量
- 読み書きするデータの量
- データ転送量
- アクションのバックアップと復元
- DynamoDB ストリーム
- グローバルテーブルを使用するときに複製する書き込み要求ユニットの数
この記事では、DynamoDB の料金体系と、上記の要素を考慮して DynamoDB のコストを削減し、最低のコストで最高のパフォーマンスを得る方法について説明します。
DynamoDBの料金
DynamoDB の使用には非常にコストがかかります。選択できる料金体系は、プロビジョニングされた容量とオンデマンド容量の 2 つです。
DynamoDB プロビジョニング容量
この Amazon DybamoDB 料金プランでは、操作容量単位 (または読み取りおよび書き込み容量単位) の使用に対して時間ごとに課金されます。管理するデータベース テーブルごとに必要なリソースの最大量を指定することにより、コストを制御できます。プロビジョニングされた容量により、自動スケーリングが可能になり、トラフィックの増加に動的に適応します。ただし、この機能が有効になっていないと、データ トラフィックの突然の変化に合わせて自動的にスケーリングされません。
DynamoDB オンデマンド料金
このプランはリクエスト単位(または読み取りおよび書き込みリクエスト単位)ごとに課金されます。リクエストに対してのみ料金が発生するため、真のサーバーレス オプションとなります。ただし、このオプションは、大規模な本番環境のワークロードを処理する場合にはコストが高くなる可能性があります。予想されるトラフィック量が不明な場合は、オンデマンド容量アプローチが自動スケーリングに最適です。
ニーズに最適な容量を理解することは、DynamoDB でコストを最適化するための第一歩です。選択する前に考慮すべき要素をいくつか示します。
プロビジョニングされた容量は、次の状況で使用してください。
- アプリケーションの最大ワークロードを把握している
- アプリケーションへのトラフィックは一定であり、スケーリングする必要はありません(自動スケーリングを有効にしない限り、コストは高くなります)
次のような状況ではオンデマンド容量を使用する必要があります。
- アプリケーションにどの程度のワークロードがかかるか分からない
- アプリケーションのデータトラフィックがどの程度安定しているか分からない
- 使った分だけ支払いたい
DynamoDB 料金計算ツール
AWS DynamoDB の使用時に発生する可能性のある料金を見積もったり計算したりするのに役立つオプションがいくつかあります。 DynamoDB に最適なのは AWS 独自の AWS 料金計算ツールであることがわかりました。これは、DynamoDB 料金計算ツールから直接入手できます。この計算ツールを使用すると、DynamoDB の機能、プロビジョニングされた容量、読み取り/書き込み設定を簡単に選択し、明確な見積もりを取得できます。
DynamoDB の読み取りおよび書き込み容量
DynamoDB テーブルの読み取り容量は、そこから読み取ることができるデータの量を示します。読み取り容量単位 (RCU) は、テーブルの読み取り容量の測定値です。サイズが最大 500 KB のオブジェクトの場合、1 RCU は 1 秒あたり 1 回の強力な一貫性のある読み取り、または 1 秒あたり 2 回の結果的に一貫性のある読み取りに相当します。
DynamoDB テーブルの書き込み容量は、テーブルに書き込むことができるデータの量を示します。書き込み容量単位 (WCU) は、1 秒あたり 1 回書き込まれる項目 (最大 1 KB のサイズ) を表します。
DynamoDB 自動スケーリング
データベースの動作を測定することは難しい場合があり、スケーリングが困難になります。データベースのスケールが小さすぎると災害につながる可能性があり、スケールが大きすぎるとリソースが無駄になる可能性があります。 DynamoDB の自動スケーリングは、アプリケーションのリクエストレートに合わせて適切な読み取りおよび書き込みスループットをプロビジョニングします。つまり、ワークロードが変化すると、DynamoDB はデータベースパーティションを自動的に調整し、動的に再配分して、読み取りスループット、書き込みスループット、およびストレージの変化に適切に対応します。
自動スケーリングは、DynamoDB テーブルを作成するときのデフォルトの容量設定ですが、どのテーブルでも有効にすることができます。 DynamoDB では、読み取りおよび書き込み容量の最小レベルと最大レベル、および希望する使用率を指定して、自動スケーリングを定義します。消費された読み取りまたは書き込みの量が必要な使用率を 2 分連続して超えると、キャップ アラームがアクティブになります。トラフィックが 15 分間連続して希望の使用率 (マイナス 20%) を下回ると、下限アラームがトリガーされます。両方のアラームが鳴ると、自動スケーリング プロセスが開始されます。
DynamoDB リソースの監視
AWS リソース (DynamoDB など) のレイテンシー、トラフィック、エラー、飽和度を監視することをリソースモニタリングと呼びます。ネットワークスループット、CPU 使用率、読み取り/書き込み操作などの必要なメトリクスを取得できるため、DynamoDB データベースのスケーリングが容易になります。たとえば、データベースを監視した後、データベースへのトラフィックが急増していることに気付いたとします。これは、大量のデータがデータベースから読み取られているか、データベースに書き込まれていることを示します。より多くの読み取り要求に対応するためにデータベースの読み取り容量を増やすか、より多くの書き込み要求に対応するために書き込み容量を増やすかを決定できます。
DynamoDB コスト最適化
AWS DynamoDB の使用時に課金される要素のいくつかを理解したところで、これらの要素を有効活用して DynamoDB のコスト効率を高める方法についていくつか提案します。
適切な容量を選択する
どのような容量構造を選択するかは既にわかっているかもしれませんが、最終的な選択を行う際には、次の点に留意してください。
DynamoDB オンデマンド容量コスト最適化
計算によると、オンデマンド テーブルのリクエストあたりのコストは、事前にプロビジョニングされたテーブルよりも 5 ~ 6 倍高くなります。ワークロードの使用量は予期しない急増がなく安定しているものの、将来の使用量が不明な場合は、自動スケーリングを有効にしたプロビジョニング モードの使用を検討してください。
DynamoDB プロビジョニング容量コスト最適化
プロビジョニングされた容量を使用しており、容量が 100 ユニットを超える場合は、予約容量の購入を検討してください。許可されたスループット容量と比較して、予約容量では 3 年間で 76%、1 年間で 53% の割引が提供されます。
未使用の DynamoDB テーブルの検索
使用されていない DynamoDB テーブルはリソースを無駄にし、不必要にコストを増加させます。この問題に対処するには 2 つの選択肢があります。オンデマンド キャパシティー モードを使用すると、読み取り/書き込みリクエストを発行したデータベース テーブルに対してのみ料金を支払うことができます。あるいは、使用されていないテーブルを検出して削除してみてください。これを行うには、テーブルの読み取り/書き込み操作を確認する必要があります。過去 90 日間に読み取り/書き込みアクティビティがなかった場合、テーブルは未使用となります。
DynamoDB のバックアップ要件を削減
データの自動バックアップと削除を可能にする Amazon DynamoDB バックアップ パイプラインにより、コストが大幅に増加する可能性があると推定されます。これは、現在の DynamoDB テーブルのバックアップを作成するには WCU を継続的に消費する必要があり、バックアップ テーブルを取得するには RCU を継続的に消費する必要があるためです。したがって、バックアップ テーブルには指定されたリソース サイズがなく、テーブルは無制限に大きくなります。代わりに、プロビジョニングされた容量を使用するネイティブ DynamoDB バックアップを使用します。こうすることで、必要なバックアップ サイズと、必要な読み取り/書き込みリソース容量がわかります。
AWS低コストリージョンの使用
一部の AWS リージョンは他のリージョンよりも高価です。データの場所にこだわらない場合は、最も安いリージョンを選択してください。
最も安価なリージョンは、us-east-1、us-east-2、us-west-2 で、1 GB 月あたり 0.25 ドル、1 WCU 時間あたり 0.00065 ドル、1 RCU 時間あたり 0.00013 ドルです。
要約する
AWS DynamoDB は、さまざまな規模や負荷のビジネスニーズを満たすために、柔軟な料金モデルと多様なリソース構成オプションを提供します。オンデマンドとプロビジョニングされた容量モードを選択し、自動階層化ストレージ、DAX キャッシュ、メトリックベースの監視最適化を使用することで、ユーザーはコストを大幅に削減し、パフォーマンスを向上させることができます。さらに、無料利用枠を活用し、容量を予約し、未使用のリソースを削除することで、DynamoDB の使用コストをさらに最適化できます。価格設定の仕組みを包括的に理解し、実際のビジネス シナリオと組み合わせることで、企業は予算を管理しながらデータベースのパフォーマンスと信頼性を最大限に高めることができます。