10 July 2026
Cost as a Design Constraint: FinOps on a £0 Budget
How a £0 infrastructure budget forced architectural decisions that map directly to cloud cost governance, and what FinOps looks like when you can't just throw money at the problem.

When people hear "£0 budget," they usually think "hobby project." But the Cycle Kirklees platform runs production workloads for real users on a self-hosted stack that costs nothing per month to operate. That constraint wasn't a limitation. It was the best design pressure I've ever worked under.
The constraint is the architecture
Most FinOps conversations start with a cloud bill and work backwards: "How do we reduce this?" The £0 budget inverts the question. You start with nothing and ask: "What can we build that costs nothing to run?"
That sounds restrictive, but it forces clarity about what actually matters. When you can't spin up a managed service to solve a problem, you have to understand the problem. When you can't pay for a monitoring tier, you have to know exactly what you need to monitor and why. The constraint strips away the luxury of over-provisioning.
Where the £0 maps to cloud cost patterns
| What I did | Cloud equivalent | FinOps parallel |
|---|---|---|
| k3s on bare metal instead of AKS | Azure Kubernetes Service | Compute right-sizing: using hardware you already own instead of paying per-node |
| GitLab CE self-hosted instead of GitHub Actions | Managed CI/CD with per-minute billing | CI minute optimisation: no metering anxiety, no pipeline rationing |
| Prometheus/Grafana/Loki self-hosted instead of Azure Monitor | Managed observability with ingestion-based pricing | Observability cost control: you own the retention window, not a pricing tier |
| Traefik + Cloudflare free tier instead of Azure Front Door | Application Gateway / Front Door | Edge routing without per-rule billing |
| Self-hosted Umami instead of Google Analytics | Managed analytics with per-hit pricing | First-party analytics with no per-event cost |
The pattern is the same in every row: the cost governance decision was made at architecture time, not at invoice time. That's what good FinOps looks like: not chasing savings after the bill arrives, but designing the system so the bill never arrives.
We also used Azure to back up critical membership data for fractions of a penny per day. We'd be surprised if we get billed before 2028—unless the platform grows beyond my wildest imagination.
The honest accounting is that £0 isn't free. I pay in time: mine, on evenings and weekends. The Proxmox host consumes electricity. The DNS records cost nothing because Cloudflare's free tier covers them, but that's a deliberate choice, not a gift.
The FinOps framing matters here because platform engineering teams face the same trade-off at scale. "Should we run this ourselves or pay someone to run it?" is the fundamental platform cost question. My £0 budget forced me to answer it honestly for every single component, and the answer was never "self-host because it's cheaper." It was "self-host because the cost of the managed alternative doesn't justify the cognitive load it removes, given the volume we're running."
That's the same calculation a platform team makes when deciding whether to offer a managed database as a golden path or let teams self-serve. The difference is that most teams have enough budget to avoid the question. I didn't, so I had to answer it.
What I'd do differently with budget
If I had a cloud budget for this platform, here's where I'd spend it:
- AKS for the Kubernetes workloads. The operational overhead of patching k3s nodes and managing etcd backups is real. AKS removes that. The cost is justified at any scale where downtime costs more than the node fee.
- Azure Monitor instead of self-hosted Prometheus. The self-hosted stack works, but Azure Monitor's correlation across services and infrastructure is genuinely better for multi-workload platforms. The ingestion pricing stings at high volume, but the operational simplicity wins.
- Managed CDN with WAF. Cloudflare's free tier is excellent, but the WAF rules and bot management in the Pro tier would have saved me hours of hand-tuning rate limits and access controls.
The point isn't that self-hosting is always right. It's that the £0 constraint taught me exactly where the break-even points are, and that's the most useful thing a platform engineer can know when advising on cloud spend.
The takeaway for platform teams
FinOps isn't about cutting costs. It's about making cost-visible decisions at architecture time. When you build with a £0 budget, every decision is cost-visible by definition: there is no hidden spend to discover later. That discipline transfers directly to cloud platform work: if you can design a production platform that costs nothing, you can design one that costs the right amount.
The constraint was the best teacher. Not because it forced me to be cheap, but because it forced me to be deliberate.
Where's the break-even point you've found between self-hosting and managed services? Share it in the comments.
Get new notes in your inbox
I publish a few times a month on platform engineering, Azure infrastructure, and building platforms that don't rely on heroics. No spam, unsubscribe anytime.
Your email is sent to my self-hosted endpoint and stored via Resend. See the privacy policy.
Comments load automatically via GitHub (Utterances), which may set cookies. See the privacy policy.