Billing Mode
1️⃣ Billing Mode মানে কি?
DynamoDB তে প্রত্যেক table এর জন্য আমরা বলতে পারি আমরা কতোটা খরচ করতে চাই এবং performance কেমন চাই।
এটা ঠিক করতে হয় table creation এ।
এটা read/write operations এর উপর ভিত্তি করে খরচ + capacity decide করে।
দুটি ধরন আছে:
2️⃣ ধরন ১: PAY_PER_REQUEST (On-Demand)
- মানে: তুমি শুধু যতো request করবে, তার জন্য pay করবে।
- তুমি capacity set করতে হবে না, DynamoDB automatic scale করবে।
- উপযুক্ত যখন: traffic unpredictable, যেমন startup বা experiment phase।
উদাহরণ:
তুমি একটা Users table তৈরি করছো। কখনো ১০০ requests/sec, কখনো ৫ requests/sec।
aws dynamodb create-table \
--table-name Users \
--attribute-definitions AttributeName=user_id,AttributeType=S \
--key-schema AttributeName=user_id,KeyType=HASH \
--billing-mode PAY_PER_REQUEST \
--endpoint-url http://localhost:8000
বিশেষ কথা:
ছোট ছোট apps, local dev বা unpredictable load এর জন্য perfect
দাম বেশি হতে পারে যদি load বেশি হয়
3️⃣ ধরন ২: PROVISIONED
মানে: তুমি আগে থেকে বলবে DynamoDB কত read/write handle করবে।
তুমি দুইটা number দিতে হবে:
Read Capacity Units (RCU)
Write Capacity Units (WCU)
উপযুক্ত যখন: traffic predictable, enterprise apps
উদাহরণ:
তুমি একটা Orders table তৈরি করছো।
তুমি জানো প্রতি সেকেন্ডে ১০০ read + ৫০ write লাগবে।
aws dynamodb create-table \
--table-name Orders \
--attribute-definitions AttributeName=user_id,AttributeType=S AttributeName=order_date,AttributeType=N \
--key-schema AttributeName=user_id,KeyType=HASH AttributeName=order_date,KeyType=RANGE \
--billing-mode PROVISIONED \
--provisioned-throughput ReadCapacityUnits=100,WriteCapacityUnits=50 \
--endpoint-url http://localhost:8000
বিশেষ কথা:
তুমি fixed number এর জন্য pay করবে, unpredictable spikes হলে throttling হতে পারে
Cost predictable, বড় apps এ সাশ্রয়ী
4️⃣ সহজ comparison – উদাহরণসহ
| Situation | Billing Mode | ব্যাখ্যা |
|---|---|---|
| তুমি নতুন startup app বানাচ্ছো, traffic unknown | PAY_PER_REQUEST | শুধু যে request করছো তার জন্য pay করবে, auto scale |
| তুমি bank system বানাচ্ছো, predictable 100 reads/sec, 50 writes/sec | PROVISIONED | Fixed capacity, predictable cost, একটু cheaper per request |
| তুমি traffic অনেক random, কিন্তু budget limited | PAY_PER_REQUEST | Simple, auto scale, কিন্তু দাম বেশি হতে পারে |
| তুমি traffic known, কিন্তু কিছু spike হলে adjust করতে চাও | PROVISIONED + Auto-scaling | Capacity adjust করবে, cost control possible |
💡 Summary:
PAY_PER_REQUEST: Flexible, auto-scale, unpredictable traffic
PROVISIONED: Fixed capacity, cheaper if traffic predictable
Main Use: Decide cost vs performance, traffic pattern এর উপর