# DynamoDB の On-Demand と Provisioned の違いを整理する

DynamoDB を設計するとき、最初に迷いやすいのが On-DemandProvisioned のどちらを選ぶべきか、という点です。

どちらも同じ DynamoDB のキャパシティモードですが、違いは単なる課金方式ではありません。実際には、アクセス予測のしやすさ急なスパイクへの強さCloudWatch を使った運用管理の重さ まで含めて判断する必要があります。

この記事では、DynamoDB の 2 つのモードを、料金だけでなく運用の観点も含めて整理します。

先に結論

まず結論として、基本の考え方は次の通りです。

  • アクセス量が読みにくい、または 急なスパイクがあるOn-Demand
  • 安定したアクセスが継続し、必要容量をある程度見積もれるProvisioned

つまり、

  • 予測不能な負荷に強く、管理を軽くしたいなら On-Demand
  • 安定負荷を長く回し、料金を詰めたいなら Provisioned

です。

ここで重要なのは、「どちらが絶対に安いか」ではなく、どの前提で有利になるか を見ることです。

On-Demand の特徴

On-Demand は、読み書きのリクエスト量に応じて課金されるモードです。RCU や WCU を細かく見積もる前提が薄いため、設計の初動を軽くできます。

向いているケース

  • 新規サービスで利用者数がまだ読めない
  • キャンペーンやイベントでスパイクが起こる
  • 社内システムで利用頻度が月末や締め日に偏る
  • PoC や検証用途で、まず動かしたい

利点

  • 容量見積もりを最小限にできる
  • 急なアクセス増に対応しやすい
  • 初期リリース時の設定ミスを減らしやすい

注意点

  • 高いトラフィックが安定して続くなら、Provisioned より割高になりやすい
  • 便利なので、そのまま放置してコスト最適化の機会を逃しやすい

たとえば、API のヒット数が日によって大きく変わるなら、Provisioned を細かく追い込むより On-Demand の方が現実的です。

Provisioned の特徴

Provisioned は、必要な読み書き容量を事前に設定するモードです。負荷の傾向が見えているなら、コストをかなり詰めやすくなります。

向いているケース

  • 日次・週次のトラフィックが安定している
  • 既存システムの移行で必要量の実績がある
  • 長期間にわたって高トラフィックが続く
  • Auto Scaling で小さな増減だけ吸収すれば足りる

利点

  • 安定ワークロードではコストを最適化しやすい
  • 既存メトリクスをもとに設計しやすい
  • 長期運用でチューニングしやすい

注意点

  • 容量見積もりを外すと、余剰コストかスロットリングを招きやすい
  • Auto Scaling や CloudWatch アラームを含めた運用設計が必要になる

Provisioned は安くできる可能性がありますが、その前提として読める負荷が必要です。ここが曖昧なら、単価だけ見て選ぶと失敗しやすくなります。

比較表で整理する

| 観点 | On-Demand | Provisioned |

|---|---|---|

| 課金の軸 | 実リクエスト量 | 事前確保した容量 |

| 向いている負荷 | 変動が大きい / 予測しづらい | 安定して予測しやすい |

| 設計の重さ | 軽い | やや重い |

| 運用管理 | 少なめ | 監視と調整が必要 |

| コスト面の強み | スパイク対応時に無駄が少ない | 安定高負荷で有利 |

この表を見れば、どちらを選ぶかはかなり素直に判断できます。

実務で見るべきポイント

実務では、料金表だけで決めると危険です。少なくとも次は確認したいところです。

1. アクセス量は本当に読めるか

2. ピーク時の増減幅はどれくらいか

3. CloudWatch で継続的に見張る運用を許容できるか

4. スロットリング時の影響は大きいか

たとえば、昼休みや夜間にだけ急増する API で、しかも伸び方が日によって違うなら、On-Demand の方が設計として自然です。逆に、社内向けバッチや安定した参照系のように、必要な throughput が見えているなら Provisioned が効きます。

試験で迷わないための軸

AWS 認定試験では、問題文の言い回しでかなり判別できます。

  • 予測不能なアクセス
  • 管理オーバーヘッドを下げたい
  • 急なスパイクに耐えたい
  • → On-Demand
  • 安定したトラフィック
  • コスト最適化
  • 利用実績がある
  • → Provisioned

この切り分けができれば、DynamoDB 関連の設問はかなり安定します。

まとめ

DynamoDB の On-Demand と Provisioned は、どちらが上という話ではありません。

  • On-Demand は、予測しづらい負荷に対して設計と運用を軽くしやすい
  • Provisioned は、安定した負荷に対して料金を詰めやすい

判断材料としては、アクセス予測の精度運用にかけられる手間 をセットで見るのがコツです。

その2つを押さえるだけで、料金の話がずっと実務寄りに見えるようになります。