Amazon DynamoDB
開発者ガイド (API バージョン 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 は、自動スケーリングポリシーに従って、読み込みキャパシティや書き込みキャパシティを必要に応じて増加させます。「DynamoDB での制限」に記載されているように、DynamoDB 制限はすべて有効です。

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

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

このページの内容: