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

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

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

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

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

注記

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

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

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

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

注記

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

DynamoDB Auto Scaling の仕組み

注記

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

次の図は、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 リクエストを処理してテーブルのプロビジョンドスループット性能を動的に増減し、ターゲット使用率に近づけます。

Auto Scaling の仕組みを理解するため、DynamoDB という名前のテーブルがあると仮定します。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 マネジメントコンソール] を選択します。詳細については、「既存のテーブルでの DynamoDB Auto Scaling の有効化」を参照してください。