Use case 03 of 21 · By Nicolas Dao

Something live that many people watch at once

Live auctions, collaborative editing, polls, chat rooms, game lobbies.

My stack for this

  1. 01
    Cloudflare Workers

    The door. Checks the login and routes each socket.

  2. 02
    Cloudflare Durable Objects

    The room. One referee per auction, document or room, holding every WebSocket.

  3. 03
    Neon (serverless Postgres)

    The record. Finished events are reconciled into Postgres.

  4. 04
    Amazon 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

Worked example: A live auction on 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.

  • My default Amazon S3

    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.

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.

Contact Us

For general inquiries, please contact us at:

For e-learning capabilities, please contact: