メニュー
Amazon DynamoDB
開発者ガイド (API Version 2012-08-10)

DynamoDB Auto Scaling によるスループットキャパシティの自動管理

注記

DynamoDB Auto Scaling の簡単な使用方法については「AWS マネジメントコンソールと DynamoDB Auto Scaling の使用」を参照してください。

多くのデータベースワークロードは本質的に循環的なものであり、そうでない場合は前もって予測することは困難です。例えば、日中の時間帯に大部分のユーザーがアクティブなソーシャルネットワーキングアプリがあるとします。データベースは日中のアクティビティを処理できる必要がありますが、夜間のスループットに同じレベルは必要ありません。別の例としては、急速に導入された新しいモバイルゲームアプリが挙げられます。ゲームがあまりに人気になると、利用可能なデータベースリソースを超過し、パフォーマンスが低下して顧客が不満を感じるようになります。この種のワークロードでは多くの場合、手動介入によってデータベースリソースを使用レベルに応じて上下させる必要があります。

DynamoDB Auto Scaling は AWS アプリケーションの Auto Scaling サービスを使用し、実際のトラフィックパターンに応じてプロビジョニングされたスループットキャパシティをユーザーに代わって動的に調節します。これにより、テーブルまたは グローバルセカンダリインデックス はプロビジョニングされた読み込みおよび書き込みキャパシティーを増やし、急激なトラフィック増加をスロットリングなしに処理します。ワークロードが減ると、アプリケーションの Auto Scaling はスループットを低下させ、未使用のプロビジョニングされたキャパシティに料金が発生しないようにします。

重要

現時点では、テーブルの消費されたキャパシティーがゼロになった場合、Auto Scaling はプロビジョニングされたキャパシティーをスケールダウンしません。回避策として、Auto Scaling が最小キャパシティーにスケールダウンするまでテーブルにリクエストを送信するか、ポリシーを変更して、プロビジョニングされた最小キャパシティーと同じになるまでプロビジョニングされた最大キャパシティーを減らすことができます。

注記

AWS マネジメントコンソール を使用してテーブルや グローバルセカンダリインデックス を作成する場合、DynamoDB Auto Scaling はデフォルトで有効になります。Auto Scaling の設定はいつでも変更できます。詳細については、「AWS マネジメントコンソールと DynamoDB Auto Scaling の使用」を参照してください。

アプリケーションの Auto Scaling により、テーブルまたは グローバルセカンダリインデックス のスケーリングポリシーを作成します。スケーリングポリシーは、テーブルまたはインデックスの読み込みキャパシティーまたは書き込みキャパシティー(またはその両方)およびプロビジョニングされたキャパシティーユニット設定をスケーリングするかどうかを指定します。

スケーリングポリシーにはさらにターゲット使用率(プロビジョニングされたスループットのある時点での消費率)が含まれます。アプリケーションの Auto Scaling はターゲットトラッキングアルゴリズムを使用し、テーブル(またはインデックス)のプロビジョニングされたスループットを実際のワークロードに応じて上下に調整します。そのため、実際のキャパシティ使用率はターゲット使用率と同じか近い値で維持されます。

注記

テーブルに加え、DynamoDB Auto Scaling は グローバルセカンダリインデックス もサポートします。すべての グローバルセカンダリインデックス は、基本テーブルとは別に、固有のプロビジョニングされたスループットキャパシティーを持ちます。グローバルセカンダリインデックス のスケーリングポリシーを作成すると、アプリケーションの Auto Scaling がインデックスのプロビジョニングされたスループット設定を調整し、実際の使用率がターゲット使用率と同じか近い値で維持されるようになります。

DynamoDB Auto Scaling の仕組み

注記

DynamoDB Auto Scaling の簡単な使用方法については「AWS マネジメントコンソールと DynamoDB Auto Scaling の使用」を参照してください。

次の図は、DynamoDB Auto Scaling によるテーブルのスループットキャパシティーの管理方法について、高レベルの概要を示しています。

次のステップは、前の図に示された Auto Scaling のプロセスをまとめたものです。

  1. DynamoDB テーブルの アプリケーションの Auto Scaling ポリシーを作成します。

  2. DynamoDB は消費されたキャパシティーメトリクスを Amazon CloudWatch に発行します。

  3. テーブルの消費されたキャパシティが一定期間中にターゲット使用率を超える(または下回る)と、Amazon CloudWatch はアラームをトリガーします。AWS マネジメントコンソール のアラームを表示し、Amazon Simple Notification Service(Amazon SNS)を使用して通知を受けることができます。

  4. CloudWatch アラームは アプリケーションの Auto Scaling を呼び出してスケーリングポリシーを評価します。

  5. アプリケーションの Auto Scaling は UpdateTable リクエストを発行し、テーブルのプロビジョニングされたスループットを調整します。

  6. DynamoDB は UpdateTable リクエストを処理してテーブルのプロビジョニングされたスループットキャパシティーを動的に増減し、ターゲット使用率に近づけます。

DynamoDB Auto Scaling の仕組みを理解するため、ProductCatalog という名前のテーブルがあるとします。テーブルにはまれにデータがバルクロードされます。そのため、書き込みアクティビティが頻繁に生じることはありません。ただし、時間で変化する高度な読み込みアクティビティが生じています。ProductCatalog の Amazon CloudWatch メトリクスをモニタリングすることにより、テーブルに 1,200 ユニットの読み込みキャパシティが必要である(アクティビティのピーク時に DynamoDB が読み込みリクエストをスロットリングしないようにするため)と判断します。さらに、読み込みトラフィックが最も低い時点で、ProductCatalogには最少で 150 ユニットの読み込みキャパシティが必要です。

読み込みキャパシティ 150 ~ 1,200 ユニットの範囲内で、ProductCatalog に適したターゲット使用率 70% を決定します。ターゲット使用率は、プロビジョニングされたキャパシティーユニットに対する消費されたキャパシティーユニットの割合で示されます(% で示されます)。アプリケーションの Auto Scaling はターゲットトラッキングアルゴリズムを使用し、ProductCatalog のプロビジョニングされた読み込みキャパシティは必要に応じて調整されるため、使用率は 70% 付近で維持されます。

注記

DynamoDB Auto Scaling は、実際のワークロードの増減が数分間維持された場合にのみ、プロビジョニングされたスループット設定を変更します。アプリケーションの Auto Scaling ターゲットトラッキングアルゴリズムはターゲット使用率を選択した値の付近に長期に渡って維持しようとします。

アクティビティの急激かつ短時間の上昇は、テーブルに組み込まれたバーストキャパシティで対応されます。詳細については、「急激に増大するキャパシティーは控えめに使用する」を参照してください。

ProductCatalog テーブルの DynamoDB Auto Scaling を有効にするには、スケーリングポリシーを作成します。このポリシーは、管理するテーブルや グローバルセカンダリインデックス、管理するキャパシティタイプ(読み込みキャパシティまたは書き込みキャパシティ)、プロビジョニングされたスループットの上下の境界、ターゲット使用率を指定します。

スケーリングポリシーを作成すると、アプリケーションの Auto Scaling はユーザーに代わって Amazon CloudWatch アラームのペアを作成します。各ペアはプロビジョニングされたスループット設定の上下の境界を示します。CloudWatch アラームは、テーブルの実際の使用率が一定期間ターゲット使用率を逸脱したときにトリガーされます。

いずれかの CloudWatch アラームがトリガーされると、Amazon SNS は通知を送信します(有効にしている場合)。その後 CloudWatch アラームは アプリケーションの Auto Scaling を呼び出し、アプリケーションの Auto Scaling は ProductCatalog テーブルのプロビジョニングキャパシティーを必要に応じて調整するように DynamoDB に通知します。

使用に関する注意事項

DynamoDB Auto Scaling の使用を開始する前に、以下を確認する必要があります。

  • DynamoDB Auto Scaling は、自動スケーリングポリシーに従って、読み込みキャパシティや書き込みキャパシティを必要に応じて増加させます。テーブルの ReadCapacityUnits または WriteCapacityUnits 設定は 1 日に最大 4 回いつでも削減できます。日付は GMT(グリニッジ標準時)に基づいて定義されます。さらに、過去 4 時間に削減が行われていない場合は追加の削減が可能になるため、一日の削減の最大数は 27 回になります (最初の 4 時間で 4 回、一日の残り時間で 4 時間ごとに 1 回)。「DynamoDB での制限」に記載されているように、他の DynamoDB 制限はすべて有効です。

  • DynamoDB Auto Scaling により、プロビジョニングされたスループット設定を手動で変更できなくなることはありません。これらの手動調整が、DynamoDB Auto Scaling に関連する既存の CloudWatch アラームに影響することはありません。

  • 1 つ以上の グローバルセカンダリインデックス を持つテーブルの DynamoDB Auto Scaling を有効にする場合、これらのインデックスに Auto Scaling を均等に適用することをお勧めします。これは、AWS マネジメントコンソール で [Apply same settings to グローバルセカンダリインデックス] を選択することで実行できます。詳細については、「既存のテーブルの DynamoDB Auto Scaling の有効化」を参照してください。

このページの内容: