DynamoDB はオートスケールできますか?
はい。DynamoDB の Auto Scaling は Application Auto Scaling を使って、プロビジョニング済みの読み取り/書き込みキャパシティを目標使用率(20〜90% で設定可能、一般的には 70%)へ向けて、自分で定めた最小/最大の範囲内で調整します。あるいは、オンデマンドキャパシティモードなら設定なしでトラフィックに合わせて即座にスケールします。どちらも、手動のキャパシティ計画なしにテーブルを負荷の変化に追従させます。
プロビジョニング済みキャパシティの Auto Scaling
テーブルごと(およびグローバルセカンダリインデックスごと)にスケーリングポリシーを作成し、次を設定します。
- 目標使用率(プロビジョニング済みキャパシティのうち何パーセントを狙うか)
- キャパシティユニットの 最小値と最大値
- 読み取り、書き込み、またはその両方 のどれをスケールさせるか
消費量が目標を横切ると、CloudWatch アラームが Application Auto Scaling を起動してキャパシティを上下させます。
オンデマンドモード
オンデマンドキャパシティは計画そのものを取り除きます。DynamoDB が自らトラフィックに合わせてスループットを調整し — 直前のトラフィックピークの 2 倍までは即座に吸収します — リクエスト単位で課金します。トラフィックがバースト的だったり予測しづらかったりするときに向いています。
どちらを選ぶか
トラフィックが安定していてよく分かっている場合、Auto Scaling 付きのプロビジョニング済みの方が安くつくのが普通です。オンデマンドはよりシンプルで、未知のトラフィックやバースト的なトラフィックに向いています。
目標使用率が割に合わなくなるところ
目標使用率は価格のダイヤルであり、それを下回ると Auto Scaling がオンデマンドに明確に負ける下限があります。
us-east-1 では書き込みキャパシティユニットは 1 時間 0.00065 ドルなので、1 か月分を確保すると 0.4745 ドルで、2,628,000 回の書き込みが買えます。これは書き込み 1 回あたり 0.00000018 ドルで、オンデマンドの 0.000000625 ドルに対して、確保したユニットをすべて使い切れば 3.46 倍安いことになります。逆に見れば損益分岐点が出ます。平均使用率 28.9% を下回るとプロビジョニング済みは割に合わなくなります。読み取りでも同じ 28.9% になるので、これは特定の単価の産物ではなく価格モデルの性質です。
1 KB のアイテムを毎秒 1,000 回書き込み続ける場合を、料金計算ツールで見積もったものです。
| キャパシティ設定 | プロビジョニング | 月額 |
|---|---|---|
| 目標 90% | 1,112 WCU | $527.64 |
| 目標 70% | 1,429 WCU | $678.06 |
| 目標 50% | 2,000 WCU | $949.00 |
| 目標 20% | 5,000 WCU | $2,372.50 |
| オンデマンド | なし | $1,642.50 |
教訓は最後の 2 行にあります。AWS が受け付ける最低値である目標 20% は、トラフィックの 5 倍を確保し、同じ仕事に対してリクエスト単位で払うより 44% 高くつきます。上の各行はどれも、Auto Scaling がキャパシティを目標にぴたりと固定することを前提にしているので、ベストケースとして扱ってください。実際のトラフィックは揺れ、アルゴリズムは遅れて追従するので、実現使用率は設定値を下回ります。
そのダイヤルで何が買えるのか
スケールアップとスケールダウンは意図的に非対称で、その非対称性こそが余裕分の対価です。AWS は、消費キャパシティが目標を 2 分連続で超えるとスケールアップが発動し、15 個連続のデータポイントが目標を下回るとスケールダウンが発動する、と記載しています。その後に続く UpdateTable の呼び出しにはさらに数分かかり、その間、古い上限を超えたリクエストはスロットリングされます。
引き下げも配給制です。UTC の 1 日は 4 回分から始まり、1 時間に 1 回分ずつ増えますが、手持ちは 4 回分を超えません。そのためテーブルあたり 1 日 27 回が上限になります。グローバルセカンダリインデックスには独自の割り当てがあります。
つまり、高い目標値は実際にお金を節約する一方、その数分をカバーするバッファを使い切ります。オンデマンドはリクエストあたりのコストが高い代わりに、このトレードオフ自体をなくします。
さらに詳しく
オンデマンドとプロビジョニングのキャパシティ比較で見比べ、料金計算ツールでコストを見積もりましょう。テーブルのサイズとアイテム数の見積もりを Table stats で確認するには、DynoTable をダウンロードしてください。
参考資料
- Managing throughput capacity automatically with DynamoDB auto scaling — Amazon DynamoDB Developer Guide
- DynamoDB on-demand capacity mode — Amazon DynamoDB Developer Guide
- DynamoDB provisioned capacity mode — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide — 引き下げの割り当て。2026-07-28 に再確認しました。
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。
損益分岐点は 2026-07-28 に、AWS Price List API から同期した us-east-1 の料率をもとに、当社の料金計算ツールで算出しました。スケーリングの遅延と引き下げの割り当ては、同じ日に上記の AWS ドキュメントから読み直しました。