The client's message arrives at 2:17 a.m.: 'the app is down.' Your stomach drops, then you remember. There are no servers. You check anyway: the platform is green, the Worker is responding, and ten minutes later the client follows up. Their office ISP is having a rough night. You go back to sleep.
That's the quiet superpower behind Cloudflare Workers for business applications: entire categories of 2 a.m. simply stop existing. No instance to patch, no disk to fill, no load balancer quietly giving up on life in the dark.
If you've wondered why embedded engineers keep reaching for the same platform on client build after client build, the answer is less about technology fashion and more about what happens (or doesn't) at 2:17 in the morning.
So why did FDEs gravitate to Workers? Because it deletes the DevOps surface that haunts client work: deploys take seconds, code runs near the user, the free tier covers most small-business tools outright, and when the engagement ends the app keeps running without becoming your lifelong hostage. For the 50-to-500-user internal tools that make up most embedded builds, it's the default answer until the requirements prove otherwise.
The 2 a.m. pager that never rings
Think about what a single VPS quietly commits you to: OS patches, certificate renewals, disk space, log rotation, monitoring, and the small matter of the box deciding to die during your client's busiest week. Each client app you host this way is a subscription to ambient anxiety, billed monthly, forever. FDEs feel this harder than most engineers because the engagement is supposed to end. A tool that requires your permanent babysitting isn't a deliverable; it's a hostage situation with a root password.
Workers flips the deal. You ship code, the platform runs it across three hundred-ish cities, and there is no machine with your name on it. The pager doesn't ring because there's nothing on your side to page about.
Why Cloudflare Workers for business applications won over FDEs
The pitch, in order of what actually matters on a client build. First, no DevOps surface: the client's IT person (often one brave generalist) doesn't inherit a server they can't maintain. Second, deploys are a git push and a few seconds, which changes the whole rhythm of iteration with a client watching over your shoulder. Third, it's global by default, so the warehouse in one state and the office in another both get fast responses without you thinking about regions. Fourth, the free tier (100,000 requests a day) covers most SMB internal tools entirely, which makes the pricing conversation pleasantly short.
It slots neatly into the broader FDE stack essentials philosophy: boring, hosted, cheap, and handoff-friendly. Every layer should survive the engineer leaving, because the engineer always leaves. That's the job.
The parts that matter
The platform has a growing family, but six pieces cover nearly every client tool. Workers is the compute: your API and business logic, running at the edge. KV is a fast global key-value store for config, content, and session-ish data. D1 is a serverless SQL database for the actual records. R2 is object storage for files and exports, with no egress fees to argue about. Queues handles background jobs so a slow task never blocks a click. Cron triggers scheduled work: the nightly sync, the Monday report, the little robot chores every business secretly runs on.
KV for content, D1 for data
Rule of thumb: if it's the truth about the business (orders, tickets, appointments), it belongs in D1, where you get SQL, transactions, and a schema with opinions. If it's read-often, change-rarely material (feature flags, dropdown contents, the pricing table), KV is faster and simpler. When D1 feels small, remember the counterargument doesn't have to be exotic; plain Postgres for everything is a perfectly honorable architecture, it just comes with a server-shaped shadow.
Pricing that survives client scrutiny
Say you're handing over an internal tool for fifty users doing maybe 300,000 requests a month with a couple gigabytes of data. Illustrative monthly math: Workers paid plan at $5, D1 effectively free at that scale, KV around a dollar, R2 pocket change. Call it $28 with headroom and a rounding-error budget. The same tool on a VPS with managed Postgres runs about $190, and a container platform lands near $140, before anyone patches anything. Then add the hidden line item: your maintenance retainer, or the client's sanity, whichever runs out first.
The magic isn't that $28 is small. It's that a client's CFO can read the bill without a translator, and the number stays boring as usage grows modestly. Boring bills are a feature you ship.
The honest limitations
Workers is not a religion, and pretending otherwise is how platforms get bad reputations. CPU time per request is capped, so heavy crunching (big report generation, image processing, a monster import) belongs elsewhere. There are no long-running processes; you design around that with Queues and Cron, which is fine until the job is genuinely one big computation. D1 is young: migrations and larger datasets still want care, and you should check current limits before betting a client's quarter on them. And some stacks just don't fit; when a build needs Python automation with the full scientific stack, you reach for a container or a boring VPS and don't apologize for it.
A reference architecture for client tools
The shape that recurs across engagements: a static front end on Pages, a Worker as the API layer, D1 for records and KV for config, Cron for scheduled jobs, R2 for the files the client insists on exporting anyway. Everything lives in one Git repo, and here's the part that matters most: the client owns the Cloudflare account. You get added as a member, you build, and when the engagement ends you get removed. The app stays theirs, the bill stays theirs, and your phone stays quiet at 2:17 a.m.
That's the real edge-computing pitch for embedded work. Not milliseconds, not the map of data centers. An app that outlives the engagement without holding anyone hostage. Pick the smallest tool your next client needs, and ship it where there's nothing to patch.