A practical field guide to Workers, Durable Objects, KV, R2, D1, Queues, Hyperdrive — how they fit together, what each is best at, and what you can build with the free tier.
Serverless functions at the edge
Best for: API endpoints, middleware, webhooks, auth, URL rewrites
Strongly-consistent state + coordination
Best for: collaborative state, game rooms, stock tickers, counters
Global, low-latency key-value store
Best for: config, feature flags, redirects, static assets
S3-compatible object storage
Best for: user uploads, backups, media files, log archives
Serverless SQLite database
Best for: relational data, user profiles, sessions, analytics
Message broker for async workloads
Best for: background jobs, webhook delivery, decoupling services
Connection-pooled database proxy
Best for: connecting Workers to an existing database
R2 (upload) โ Worker โ Queue โ Worker โ fetch() transcode server โ R2 (output)
DO (single-writer) โท Workers (broadcast) โท WebSocket clients
Cloudflare Pages (static) โ Workers (API routes) โ D1 (data)
Webhooks โ Worker โ Queue โ Worker (batch) โ D1
Workers ping your home lab endpoints every 5 minutes, push results to D1. Frontend reads from D1 via Workers. Alert on failure.
R2 bucket with a Worker that generates upload URLs. D1 tracks files. DO manages share links with expiry.
Cron Worker fetches RSS feeds, stores articles in D1. Workers API serves your personalized digest. R2 caches article images.
DO manages game state. Workers handle WebSocket connections. D1 stores leaderboards. Queue processes deferred scoring.
Improving the DX for TypeScript developers writing Workers. Covers typed bindings, environment variables, and RPC-style DO calls.
Using D1's type inference for end-to-end type safety from database to HTTP response. No ORM needed.
DO RPC makes calling Durable Objects feel like calling local functions. Matt's tutorial covers the DO lifecycle, alarms, and storage.
| Product | Free Tier | When to Upgrade |
|---|---|---|
| Workers | 100k req/day | Deploy a busy API or cron-heavy app |
| KV | 1 GB storage, 1k writes/day | Store user sessions or config at scale |
| R2 | 10 GB storage, 1M ops/month | Store videos or large file uploads |
| D1 | 5 GB, 5M rows read/mo | Production app with real traffic |
| Queues | 1M operations/month | Heavy background job processing |
| DO | 1M req/day, 5 GB storage | Real-time apps with millions of connections |
I need to...
WorkersKVR2D1DOQueuesHyperdriveWorkers + D1 + R2