はじめに: この記事は最新のDynamoDBのコスティングに準拠していません。
DynamoDBも オンデマンドキャパシティやリザーブドキャパシティ(読み込み/書き込み要求の項)がリリースされ時間が経ち、本記事の内容はだいぶ古くなっています。
いずれ更新しますが、あくまで参考程度に留めて下さいますよう。
概要
DynamoDBを業務で使っていて、結構慣れてきたつもりだけど、
コスト感覚があまり身についてない。
公式ドキュメントだと、以下の様な記述になっていて、単位が小さすぎて感覚が掴みにくい。
以下東京リージョンの記述から引用。
プロビジョニングされたスループットの容量
書き込みスループット: $0.00742 :10 ユニットの書き込み容量あたり/1 時間
(1 時間あたり最大 36,000 回の書き込みを実行するために十分な容量)*
読み込みスループット: $0.00742 : 50 ユニットの読み込み容量あたり/1 時間
(1 時間あたり最大 180,000 回の強力な整合性のある読み込み、または最大 360,000 回の結果整合性のある読み込みを実行するために十分な容量)*
引用ここまで。
なるほど、わからん……
計算してみた
とりあえず、最も小さい1テーブルについてどのくらい払えば作れるのか見積もってみて、
コストの最小単位を掴んで、1ヶ月あたりテーブルごとの費用の感覚値が出せるようにする。
サービスの売上だの自分の人件費だの、ランニングコストとの兼ね合いを考えられて便利そう。
2015/06/05 時点の東京リージョンでの価格で考える。
リードキャパシティ
$0.00742 : 50 ユニットリードキャパシティあたり/1 時間
より、1ドル120円として、1ユニットのリードキャパシティを1ヶ月使用した場合のコストは、
$0.00742 * 720[hour] / 50[ユニット] = 0.106848 [ドル/(ユニット * 月)] ≒ 12.82 [円/(ユニット * 月)]
となる。
ライトキャパシティ
リードキャパシティの5倍のコストなので、同様に計算して、
64.11 [円/(ユニット * 月)]
となる。
ストレージ
最初の25GBまで無料なので、ぼちぼちのサービス規模になるとか、
ECで異常なテキスト量の商品詳細がいっぱいあるとか、
そういう状態になるまではコストゼロとみてよさそう。
なったとしても、S3の低冗長化ストレージの1.1倍、
スタンダードストレージの0.86倍 なので、容量で爆発してしぬことは無さそう。
で、結局いくらかかるの
リードもライトもキャパシティが1のテーブルについて、大きくないサービスなら容量課金が免れることから、
単純にキャパシティの和として、
85.93 [円/(最小キャパシティテーブル・月)]
となる。
20テーブル作っても1700円位なので、NoSQL的なもの慣れてる人・Mongoから移行しちゃうような人なら、
サービスによってはRDS使わなくてもいけちゃいそうな感じがする。
単純な計算ミスの指摘等もお待ちしております。
最近はコンソールに計算ツールがついていて簡単に計算できる
新しいDynamoDBコンソールで、リード/ライトキャパシティについての簡易コスト見積もり計算機が出現していた。
2016/01/21 現在だと、キャパシティ1ずつ、結果整合性、インデックス無しで、
$0.67 = 78.344247 円
になる。