Managed vs self-hosted: the honest decision tree (it isn't 'self-host everything')
Read enough “should I use managed services or self-host?” threads and you notice they all converge on the same, quietly wise answer. Not “self-host everything.” Not “just pay for managed.” It’s some version of: “I host everything myself — except email and DNS.” Or, more honestly still: “I like owning my stack, but I like sleeping more.”
That carve-out is the entire framework. Let me make it explicit.
The three axes people actually decide on
Strip away the ideology and every real decision comes down to three trade-offs (all three showed up, unprompted, in the same thread):
- Mental load vs control. Managed wins when you want reliability with minimal friction and don’t want to babysit updates, patching, and uptime. Self-host wins when the thing is core to your workflow and you need full flexibility — and only if you’ll commit the time to maintain it.
- Cost at scale. Managed is cheap when you’re small or the usage is modest. Past a threshold — and it’s usually a traffic threshold — the per-usage meter overtakes the cost of just running the box yourself.
- Data sovereignty (and learning). Sometimes the deciding factor isn’t money at all; it’s where the data is allowed to live, or wanting to actually understand your own stack.
The heuristic: move the meter, keep the chore
Here’s how I turn those axes into an actual answer for clients:
- Move the things whose cost scales with your success. Egress, per-request fees, traffic-driven storage — the meters that grow every time you grow. A server you rent flat doesn’t charge you per gigabyte, so the savings widen as you scale. This is where self-hosting (or flat-rate hosting) pays for itself.
- Keep managed the things that are cheap to rent and genuinely painful to run. The thread’s near-universal carve-outs — email and DNS — are carve-outs for a reason: deliverability and uptime are miserable to own, and the bill for renting them is small and flat. The database is often the third one on that list, until scale flips the math.
Move what scales with your success; rent what's cheap and painful to run.
Put simply: leave the meter, keep the chore. Move the costs that punish growth; pay someone to run the boring, hard, cheap stuff.
This is the “when not to move” position, in tree form
If someone tells you to move all of it, or none of it, they’re selling something — a migration, or a managed-everything bill. The honest answer was never ideological. Self-hosting isn’t a virtue; it’s a tool for killing the per-usage meter where it hurts, while keeping the convenience where the meter is cheap. Flat-rate managed services — managed Postgres, zero-egress object storage — are frequently the right call: you’re leaving the meter, not the datacenter, and not the reliability.
The output of the tree is never “self-host everything.” It’s a short list: move these three (they scale with traffic), keep those two managed (they’re cheap and a pain), and here’s the five-year math for each. That list is exactly what a bill teardown produces.
Not sure which parts of your stack are worth moving and which are cheaper left alone? That’s the whole question I answer — and sometimes the answer is “leave it.” Every message comes straight to me — I read and reply to each one myself, usually within a day, and what readers send shapes what I build next. It’s just me for now, so that’s genuinely true; it won’t be forever. Send me your setup or a recent bill and I’ll give you the move-these / keep-those split — free, within a business day.