Something live that many people watch at once
Live auctions, collaborative editing, polls, chat rooms, game lobbies.
My stack for this
- 01Cloudflare Workers
The door. Checks the login and routes each socket.
- 02Cloudflare Durable Objects
The room. One referee per auction, document or room, holding every WebSocket.
- 03Neon (serverless Postgres)
The record. Finished events are reconciled into Postgres.
- 04Amazon S3
The archive. Bid logs and history as Parquet for analytics.
Don't
- API Gateway
WebSocket APIs bill every message pushed to every watcher, close connections after 2 hours, and hold no state, so you still need a database to decide who's winning. The auction example costs about $407 a month, vs $15–30 with one Durable Object per auction.
Instead: Cloudflare Durable Objects
- GraphQL and AppSync
AppSync Events cost about $310 for the same auction, and bring GraphQL-era tooling. A Durable Object is the room and the referee in one.
Instead: Cloudflare Durable Objects
The picks, in brief
What each one is, my verdict, and what it costs. Every name opens the full entry: when to use it and when not, the gotchas with their fixes, provisioning and alternatives.
The edge primitive. It sits between your users and your real backend, and it's very, very good at that.
Pricing: $5 a month per account, including 10M requests and 30M CPU-ms. Then $0.30 per million requests and $0.02 per million CPU-ms. Billed on CPU time only: waiting is free. No egress charges.
A tiny server with its own SQLite database, addressed by name. One referee for everyone connected to the same thing. Unbeatable for live, shared, short-lived state.
Pricing: On Workers Paid: 1M requests included, then $0.15 per million. Duration: 400,000 GB-s included, then $12.50 per million GB-s (always billed at 128 MB, not billed while hibernating). Incoming WebSocket messages count 20:1; outgoing messages are free. Rows written: 50M included, then $1 per million. Storage: 5 GB included, then $0.20/GB-month.
My go-to Postgres. Scales to zero, branches like git, and talks HTTP so Lambda needs no VPC or proxy.
Pricing: Launch plan $0.106 per compute-unit hour, Scale $0.222; storage $0.35/GB-month; no minimum. Available in Sydney.
No complaints. Storage, data lake, archive.
Pricing: Sydney: $0.025/GB-month (Standard). Internet egress $0.114/GB (first 10 TB): that's where it hurts. Requests: $5.50 per million PUT/LIST, $0.44 per million GET. Standard-IA $0.0138/GB, Glacier Instant Retrieval $0.005/GB. Transfer from S3 to CloudFront and to AWS compute in the same region is free.
Where they sit
The layers of the stack this job touches, with every tool named on this page.
Edge
Between your users and your backend.
APIs, queues and events
How requests and events move.
Data
Databases, migrations and the data lake.
Storage and delivery
Files, websites and CDNs.
Want this stack in your AWS account?
Cloudless Labs is a Sydney consultancy. We migrate on-premises systems to AWS, build serverless apps on this stack, and coach teams to ship with Claude Code and Codex.