DynamoDB Auto Scaling によるスループット容量の自動管理 - Amazon DynamoDB

DynamoDB Auto Scaling によるスループット容量の自動管理

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

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

注記

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

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

スケーリングポリシーには、ターゲット使用率 (ある時点で消費したプロビジョン済みスループットの割合) も含まれます。Application Auto Scaling はのターゲット追跡アルゴリズムを使用して、実際のワークロードに応じてテーブル (インデックス) のプロビジョンスループットを上下に調整することで、実際の容量使用率がターゲット使用率に、またはその近くに留まるようにします。

読み取りおよび書き込み容量に対して、Auto Scaling ターゲット使用率の値を 20% から 90% の間で設定できます。

注記

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

DynamoDB Auto Scaling の仕組み

注記

DynamoDB Auto Scaling の簡単な使用方法については、AWS Management Console と DynamoDB Auto Scaling の使用 を参照してください。

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

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

  1. DynamoDB テーブルの Application Auto Scaling ポリシーを作成します。

  2. DynamoDB は、消費された容量メトリクスを Amazon CloudWatch に公開します。

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

  4. CloudWatch アラームは、Application Auto Scaling をコールしてスケーリングポリシーを評価します。

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

  6. DynamoDB は UpdateTable リクエストを処理してテーブルのプロビジョンドスループット性能を動的に増減し、ターゲット使用率に近づけます。

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

読み込みキャパシティー 150 ~ 1,200 ユニットの範囲内で、ProductCatalog に適したターゲット使用率 70% を決定します。ターゲット使用率は、プロビジョンされた容量単位に対して消費された容量単位の割合がパーセンテージで示されます。Application Auto Scaling は、ターゲット追跡アルゴリズムを使用して、ProductCatalog のプロビジョンされた読み込み容量が必要に応じて調整され、使用率が 70% またはその近くに留まるようにします。

注記

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

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

ProductCatalog テーブルの DynamoDB Auto Scaling を有効にするには、スケーリングポリシーを作成します。このポリシーでは、以下を指定します。

  • 管理するテーブルまたはグローバルセカンダリインデックス

  • 管理するキャパシティータイプ (読み込みキャパシティーまたは書き込みキャパシティー)

  • プロビジョニングされたスループット設定の上下の境界

  • ターゲット使用率

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

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

使用に関する注意事項

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

  • DynamoDB Auto Scaling は、自動スケーリングポリシーに従って、読み込み容量や書き込み容量を必要に応じて増加させます。Amazon DynamoDB のサービス、アカウント、およびテーブルのクォータ で説明されているように、すべての DynamoDB クォータは有効です。

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

  • 1 つ以上のグローバルセカンダリインデックスを持つテーブルの DynamoDB Auto Scaling を有効にする場合、これらのインデックスに Auto Scaling を均等に適用することをお勧めします。これを行うには、AWS Management Console で [Apply same settings to global secondary indexes (グローバルセカンダリインデックスに同じ設定を適用する)] を選択します。詳細については、「」を参照してください既存のテーブルでの DynamoDB Auto Scaling の有効化