TL;DR
Cloudflare Developer Platform có model pricing đơn giản: free tier rộng, flat $5/tháng cho Paid plan include quota hào phóng, overflow tính theo unit với rate rẻ so với AWS. Egress bằng 0.
Luận điểm chính:
Cloudflare rẻ hơn AWS ở 3/4 primitive điển hình (Workers, D1, R2) và ngang ở 1/4 (KV vs DynamoDB, Queues vs SQS). Nhưng lợi thế quyết định là zero egress và không phải trả cho hạ tầng nhàn rỗi. Với app < 100M request/tháng, thường rẻ hơn AWS 5-20 lần. Với > 1B, vẫn rẻ 10-30 lần — chủ yếu nhờ egress và no idle cost.
Bài này đi qua: pricing từng primitive chi tiết, 3 scenario thực (blog, SaaS 10k user, app 100M req), breakpoint khi nào Paid tier đáng bật, và khi nào AWS thực sự rẻ hơn Cloudflare.
Dành cho ai
- Dev đang build side project, cần ý tưởng sơ bộ về cost.
- Team startup đánh giá migration từ AWS.
- Finance / engineering manager ước chừng budget cho platform choice.
Nên đọc trước: Part 1 (tổng quan), Part 13 (Workers AI pricing).
Sau bài này bạn sẽ:
- Ước chừng cost monthly cho app của bạn trong < 15 phút.
- Biết breakpoint khi chuyển từ Free sang Paid, từ Paid sang Enterprise.
- Xác định khi nào cost optimization đáng effort, khi nào không.
Bài này không nói về gì
- Enterprise pricing đi sâu: bulk discount custom, không public. Tham khảo sales.
- Thiết lập cost alert: Part 17 đã cover (Analytics Engine + Notifications).
- So sánh Vercel, Netlify, Railway: focus AWS vì benchmark phổ biến nhất cho serverless.
Pricing từng primitive
Workers (compute)
Free tier:
- 100k request/ngày (≈ 3M/tháng).
- 10ms CPU time mỗi invocation.
Paid plan ($5/tháng):
- 10M request/tháng included.
- 30s CPU time mỗi invocation.
- Overflow: $0.30 mỗi 1M request + $0.02 mỗi 1M CPU-ms trên 30ms.
So với AWS Lambda:
- Lambda: $0.20/1M request + $0.0000166/GB-s.
-
- API Gateway: $1/1M request (REST) hoặc $3.50/1M (HTTP API).
Worker $0.30/1M vs Lambda+APIGW $1.20-4.20/1M = rẻ hơn 3-14 lần.
D1 (SQL database)
Free tier:
- 5M rows read/ngày, 100k rows written/ngày.
- 5GB storage.
Paid plan (included trong $5 bundle):
- 25B rows read/tháng, 50M rows written/tháng.
- 5GB storage.
Overflow:
- $0.001 mỗi 1M rows read.
- $1 mỗi 1M rows written.
- $0.75 mỗi GB-month storage.
So với DynamoDB on-demand:
- $0.25/1M reads (eventually consistent), $1.25/1M writes.
- $0.25/GB storage.
D1 reads rẻ hơn 250 lần so với DynamoDB. Writes tương đương. Storage đắt hơn DynamoDB 3 lần (nhưng ai dùng > 10GB thì đã migrate khỏi D1 rồi).
So với RDS (small instance):
- t4g.micro: $12/tháng tối thiểu (chưa tính storage, backup, multi-AZ).
- Scale dọc tốn kém.
D1 < $1/tháng cho blog, $10-30/tháng cho SaaS thường. RDS tối thiểu = $12/tháng cho dev database idle.
KV (key-value)
Free:
- 100k reads/ngày, 1k writes/ngày.
- 1GB storage.
Paid:
- 10M reads, 1M writes /tháng included.
- Overflow: $0.50/1M reads, $5/1M writes, $0.50/GB-month.
So với DynamoDB:
- Reads: KV rẻ hơn 2 lần ($0.25 vs $0.50).
- Writes: DynamoDB rẻ hơn 4 lần ($1.25 vs $5).
KV eventually consistent. Dùng cho cache, config, flag. Không cho data transactional.
R2 (object storage)
Free tier:
- 10GB storage.
- 1M Class A operations (PUT, POST, LIST).
- 10M Class B operations (GET, HEAD).
Paid:
- $0.015/GB-month storage.
- $4.50/1M Class A operations.
- $0.36/1M Class B operations.
- $0 egress.
So với S3:
- $0.023/GB-month storage.
- $5/1M Class A, $0.40/1M Class B.
- $0.09/GB egress (trong US, outbound internet).
R2 rẻ hơn 50% về storage. Chênh lệch egress là yếu tố quyết định với media/API public.
Ví dụ: 1TB R2 storage + 10TB egress/tháng = R2 $15 vs S3 $923 ($23 + $900). Rẻ hơn ~60 lần.
Queues
Free:
- 1M operations/tháng.
Paid:
- 100M operations/tháng included.
- $0.40/1M thêm.
So với SQS:
- $0.40/1M request (64KB).
- Message lớn hơn → tính thêm billing unit.
Ngang nhau. Không có lợi thế lớn hoặc nhược điểm.
Durable Objects
Free: hạn chế, thường 1M request/ngày + duration nhỏ.
Paid:
- $0.15/1M request.
- $12.50/1M GB-s duration (khi DO active).
- $0.20/GB-month storage.
- WebSocket hibernated: $0 duration, chỉ storage.
So sánh: không có AWS equivalent trực tiếp. Gần nhất = ElastiCache Redis cluster ($15-50/tháng min) + code coordination tự viết.
1000 chat room active: ~$2/tháng DO vs $15+/tháng Redis. Rẻ hơn 8 lần.
Vectorize
Paid:
- $0.04/1M dimensions stored/month.
- $0.01/1M dimension queried.
So với Pinecone:
- $70/tháng tối thiểu (p1.x1 starter).
- Quota per-namespace.
Vectorize tính phí theo dùng. Pinecone yêu cầu commitment tối thiểu. Rẻ hơn 10-70 lần ở small scale.
Workers AI
Free: 10k neuron/ngày.
Paid: $5 bundle include allocation neuron.
Per-model pricing (ví dụ):
- Llama 3.1 8B: $0.11/1M input token.
- Llama 3.3 70B: $0.40/1M input.
- bge-m3 embedding: $0.012/1M token.
- Flux schnell: $0.005/ảnh.
So với Bedrock Claude Haiku: $0.25/1M input. Workers AI Llama 8B tương đương tier = rẻ hơn 2 lần.
Model frontier (GPT-4, Claude 4.7, Gemini 2.5 Pro) không có equivalent Workers AI.
Scenario 1: blog cá nhân
Setup: Astro static blog + Worker cho form subscribe + Workers AI cho gợi ý popular posts.
Traffic:
- 50k page view/tháng.
- 200 form submit/tháng.
- 2k AI suggestion call/tháng.
Cloudflare cost:
| Service | Usage | Cost |
|---|---|---|
| Workers (Paid plan) | 100k req (page + api) | $5 (include) |
| Workers Assets (serve HTML) | 50k | $0 (trong bundle) |
| D1 subscribers table | 200 writes, 50k reads | $0 |
| R2 cover image | 500MB, 200k fetch | $0.01 |
| Workers AI Llama 8B | 2k call × 500 token | $0.10 |
| Vectorize | 1000 vector × 1024 dim | $0.04 |
| Tổng | $5.15/tháng |
AWS equivalent:
| Service | Usage | Cost |
|---|---|---|
| Lambda | 100k req | $0.02 |
| API Gateway | 100k req | $0.10 |
| CloudFront + S3 | 50k page × 100KB = 5GB | $0.45 |
| DynamoDB | 250 write, 50k read | $0.05 |
| S3 image | 500MB, 200k GET | $0.09 |
| Bedrock Claude Haiku | 2k call | $0.50 |
| OpenSearch (vector) | tối thiểu $50/tháng | $50 |
| Tổng | $51.21/tháng |
Cloudflare rẻ hơn 10 lần nhờ bundle + không có min instance.
Free tier hoàn toàn?
Nếu không dùng Workers AI + Vectorize: Cloudflare $0/tháng toàn bộ.
Key insight
Blog cá nhân Cloudflare miễn phí hoặc $5 total. AWS tối thiểu $50+ vì OpenSearch + even tiny DB instance.
Scenario 2: SaaS startup 10k user
Setup: todo app SaaS + admin dashboard + API cho mobile.
Traffic:
- 1M API request/tháng.
- 100k user action/ngày = 3M/tháng D1 write.
- 30M D1 read/tháng.
- 100GB R2 (user upload) + 200GB egress.
- WebSocket chat 1000 concurrent avg (Durable Objects + Hibernation).
Cloudflare:
| Service | Usage | Cost |
|---|---|---|
| Workers Paid | 1M req | $5 (include) |
| D1 | 30M reads (free in bundle), 3M writes | $3 (2M overflow × $1/1M) |
| R2 storage | 100GB | $1.50 |
| R2 egress | 200GB | $0 |
| R2 ops | 500k Class B | $0.18 |
| Durable Objects | 1000 room × 1h active/day | ~$5 |
| Tổng | ~$14.70/tháng |
AWS:
| Service | Usage | Cost |
|---|---|---|
| Lambda | 1M req | $0.20 |
| API Gateway | 1M req | $1 |
| DynamoDB | 30M reads, 3M writes | $11.25 |
| S3 storage | 100GB | $2.30 |
| S3 egress | 200GB | $18 |
| S3 ops | 500k GET | $0.20 |
| ElastiCache t3.small Redis | min 1 node | $50 |
| Socket.io trên EC2 t3.small | 1 instance | $15 |
| Tổng | ~$98/tháng |
Cloudflare rẻ hơn ~7 lần. Egress là yếu tố lớn (200GB = $18 AWS, $0 CF).
Scenario 3: app 100M request/tháng
Setup: API-heavy service, AI features, media upload.
Traffic:
- 100M Worker request.
- 500M D1 read, 50M write.
- 1TB R2 + 10TB egress.
- 10M Workers AI call (Llama 8B).
- 5M Vectorize query.
Cloudflare:
| Service | Usage | Cost |
|---|---|---|
| Workers | 100M req (10M free, 90M × $0.30/1M) | $27 |
| D1 | 500M read free, 50M write × $1/1M | $50 |
| R2 storage | 1TB | $15 |
| R2 egress | 10TB | $0 |
| R2 ops | 10M | $3.60 |
| Workers AI | 10M × 500 token × $0.11/1M | $550 |
| Vectorize | 5M query × 1024 dim × $0.01/1M | $51 |
| Tổng | ~$696/tháng |
AWS:
| Service | Usage | Cost |
|---|---|---|
| Lambda | 100M req | $20 |
| API Gateway | 100M req | $100 |
| DynamoDB | 500M read, 50M write | $188 |
| S3 storage | 1TB | $23 |
| S3 egress | 10TB (đã qua tier) | $900 |
| Bedrock Claude Haiku | 10M × 500 token | $1250 |
| OpenSearch m6g.large (vector) | 1 node | $150 |
| Tổng | ~$2631/tháng |
Cloudflare rẻ hơn ~4 lần. Egress + AI là biggest savings.
Breakpoint: khi nào bật Paid
Free tier của Cloudflare rộng. Breakpoint bật Paid plan ($5/tháng):
- Workers observability enabled — free plan chỉ có trace limited.
- Cron trigger > 30s — free: 30s timeout, paid: 15 phút.
- CPU time > 10ms/req — free limit, paid lên 30s.
- Request > 3M/tháng — free cap.
- Dùng Workers AI — neuron quota free đủ nhỏ.
- Cần R2 > 10GB — vượt free tier.
Paid $5/tháng flat include:
- 10M request.
- 30s CPU time.
- 25B D1 row read, 50M write.
- 10GB R2 storage + ops.
- Workers AI neuron allocation.
Gần như luôn đáng tiền nếu đang build app thật.
Enterprise: khi nào?
- Bot Management advanced score-based.
- Logpush enterprise.
- Commit discount (volume negotiate).
- Custom SLA.
- Dedicated support.
Không có số cố định. Thường > $1000/tháng spend thì contact sales worth.
Cost optimization tip
① Sampling observability
Workers Logs $0.60/1M cho 100M request = $60/tháng. head_sampling_rate: 0.1 → $6/tháng.
② Cache aggressive
Cache CDN miễn phí. API /api/popular cache 1h = 10k hit → 10 miss/hour = 240/ngày vs 240k/ngày = rẻ hơn 1000 lần.
③ Aggregate trước khi write D1
1M event/phút × D1 write 1-1 = đắt. Buffer vào KV / Queue, aggregate 5-phút batch → write 1 row thay vì 1M row.
④ R2 lifecycle rule
Log file R2 sau 30 ngày archive hoặc delete. Storage cost compound, không tự clean.
⑤ Workers AI cache
AI Gateway cache per-prompt. Similar post recommendation cached 24h = giảm 99% call.
⑥ KV tier down
KV read $0.50/1M. Nếu data rarely change: cache trong Worker variable (module-level) cho warm isolate. Miễn phí cho cache hit.
⑦ Scheduled Worker thay DO
DO luôn alive = cost. Scheduled Worker invoke → short execution → idle. Nếu không cần WebSocket, Scheduled thay được.
Khi AWS thực sự rẻ hơn
Không phải luôn Cloudflare. Các trường hợp AWS rẻ hơn:
① Commit discount sâu
Enterprise deal với AWS 3-year RI 60% discount → compute rẻ hơn.
② Job data-intensive
Spark + EMR cho ETL TB/day. Cloudflare không có equivalent. Self-host với Workers không scale.
③ Service chuyên biệt
SageMaker custom model training, SES email, Route 53 advanced routing. AWS có breadth lớn hơn.
④ Process long-lived
Worker không chạy 24/7. Cần Redis pub-sub 365/7 → self-host trên EC2 rẻ hơn nếu throughput cao.
⑤ Existing lock-in
Migration cost > saving. Nếu app AWS 5 năm có 200 resource, migrate Cloudflare không justify trừ khi strategic.
Gotcha
① Free tier mỗi ngày, không theo tháng
Workers Free: 100k req/ngày, reset midnight UTC. Burst traffic có thể dùng hết quota trong 1 giờ → rate limit. Paid plan cho predictable.
② D1 write cost tinh tế
$1/1M write rẻ, nhưng 1 query UPDATE 1000 row = 1000 write. Bulk update không phải 1 write = 1 transaction billed.
③ R2 Class A đắt hơn Class B
PUT, LIST đắt hơn GET 10 lần. Không gửi batch PUT cho nhiều small file — tốt hơn là concat.
④ DO GB-s tính khi active
Hibernation API quan trọng. Không hibernate = 24h/ngày × 30 ngày = 2.5M GB-s × $12.5/1M = $31/tháng mỗi DO. Hibernation giảm 10-100 lần.
⑤ Egress không miễn phí cho AI external
Workers AI egress free. OpenAI/Anthropic qua AI Gateway: Worker → Gateway free. Gateway → Provider → Gateway free (Cloudflare network). Provider → user: charge nếu Cloudflare proxy, khác nếu route khác.
⑥ Vectorize dimension × count
Cost = dim × vector × rate. 1M vector × 1024 dim = 1B dimension stored. Dimension nhỏ (bge-small 384) giảm cost tỉ lệ.
⑦ Budget alert
Không có hard cap built-in. Overflow 100 lần vẫn charge. Setup Notification cost alert sớm (Part 17).
⑧ Reserved pricing không có
AWS RI 40-60% saving. Cloudflare enterprise negotiate, không public. Small/medium team không benefit.
Template ước chừng 15 phút
Không chính xác tuyệt đối, nhưng catch 80%:
Workers: monthly_req / 1e6 × $0.30 (overflow sau 10M) → $X
D1: read / 1e6 × $0.001 + write / 1e6 × $1 → $Y
R2: storage_GB × $0.015 + ops / 1e6 × ($4.50 class A + $0.36 class B) → $Z
Workers AI: tokens / 1e6 × $0.11 (Llama 8B) → $W
Vectorize: dim_stored / 1e6 × $0.04 + query / 1e6 × $0.01 → $V
DO: active_GB_s / 1e6 × $12.50 + storage_GB × $0.20 → $U
Tổng ≈ X + Y + Z + W + V + U + $5 (Paid plan).
So AWS: tương tự với rate × 3-10 lần.
Production checklist
- Bật Paid plan ($5/tháng) nếu build real app.
- Sampling observability phù hợp traffic.
- Cache header + CDN cho static + API có data cache được.
- Log cost budget alert (Notifications).
- R2 lifecycle rule cho log, backup expired.
- DO hibernation enabled cho WebSocket.
- AI Gateway cache cho LLM call.
- Aggregate D1 write (buffer + batch), không 1-1 event.
- Dimension embedding nhỏ nhất mà đủ quality (bge-base 768 thay bge-m3 1024 nếu OK).
- Review cost monthly, xác định spend bất thường.
- Scope API token theo principle of least privilege (Part 12) — giảm rủi ro cost abuse từ leaked token.
Kết
Cloudflare developer platform rẻ hơn AWS ở hầu hết scenario 5-30 lần, chủ yếu nhờ bundle include + zero egress + không có idle cost. Với blog/SaaS medium scale, total < $50/tháng dư dả. Với app 1B request/tháng, < $1000/tháng.
AWS vẫn thắng cho workload chuyên biệt, batch data-intensive, commitment discount sâu. Nhưng cho app edge-first, Cloudflare là default hợp lý.
Part 20 (cuối): Migration từ AWS/Vercel sang Cloudflare — playbook thực tế move Lambda → Worker, S3 → R2, DynamoDB → D1. Đóng series.