RE09 All articles
Engineering Culture

Plain and Proud: The Indie Dev Movement Ditching K8s for a $6 VPS

RE09
Plain and Proud: The Indie Dev Movement Ditching K8s for a $6 VPS

Somewhere along the way, the infrastructure conversation got hijacked. What started as a legitimate need to scale massive distributed systems at companies like Netflix and Google slowly trickled down into the tooling choices of solo developers building weekend projects for a few hundred users. The result? A generation of side projects crushed under the weight of their own ops complexity before a single real user ever signed up.

But something is shifting. Quietly, and without a lot of fanfare, a meaningful chunk of indie developers and small engineering teams are walking away from the complexity arms race. They're choosing boring. They're choosing predictable. And weirdly, they're winning.

The Resume-Driven Architecture Problem

Let's be honest about something: a lot of infrastructure decisions aren't made for the product. They're made for the portfolio.

Kubernetes looks great on a LinkedIn profile. Service meshes sound impressive in an interview. Nobody ever got a senior engineering job by bragging about their rock-solid Docker Compose setup on a $12/month Hetzner box. So the incentives have been quietly pointing developers toward complexity for years — not because the complexity was needed, but because it was legible to hiring managers.

The problem is that resume-driven architecture has a real cost. It costs time you don't have. It costs mental overhead that could go into actually building your product. And when something breaks at 2am, you're not debugging your app — you're debugging your infrastructure layer, which is its own full-time job.

The developers pushing back on this aren't anti-technology. They're just doing the math differently.

What Boring Infrastructure Actually Looks Like

Here's a typical setup from the "boring stack" crowd: a single VPS from a provider like DigitalOcean, Hetzner, or Linode running Docker Compose. Nginx in front. Maybe Caddy if they want automatic HTTPS with less config. A managed Postgres database, because that's one less thing to babysit. Backups to S3-compatible object storage. Done.

No cluster to maintain. No YAML sprawl across seventeen config files. No three-hour debugging session because a pod got evicted at the worst possible moment. The whole thing fits in your head, which turns out to be an underrated superpower.

For specific use cases — image processing, email sending, scheduled jobs — some of these developers will reach for a serverless function. AWS Lambda or Cloudflare Workers handle the spiky, event-driven stuff without requiring you to keep a server warm. But that's a deliberate, targeted decision, not a default architectural posture.

The result is infrastructure that a single person can fully understand, fully debug, and fully maintain without a dedicated DevOps hire.

The Surprising Competitive Advantage of Predictability

Here's what the boring infrastructure crowd has figured out that the Kubernetes maximalists haven't fully reckoned with: for most products at most stages of growth, predictability beats raw capability.

When you know exactly what your system does, you can move faster. Debugging is faster. Onboarding a new team member is faster. Shipping a new feature is faster. You're not constantly fighting the infrastructure tax — that invisible cost in cognitive load and time that complex systems extract from every engineering decision you make.

There's also a financial angle that's hard to ignore. Running a well-optimized app on a couple of VPS instances can cost you $20–40 a month. A modest Kubernetes setup on a managed cloud provider can easily run $200–400 before you've written a single line of business logic. For a bootstrapped project or a small team without VC backing, that difference is real money.

And when something does go wrong — because something always goes wrong — the blast radius on a simple system is dramatically smaller. You're not tracing a failure across six microservices and three cloud regions. You're looking at one server, a few containers, and a log file you can actually read.

The Psychology of Letting Go

There's something almost therapeutic that developers describe when they talk about simplifying their stacks. One indie founder put it bluntly in a forum thread that made the rounds earlier this year: "I deleted my Kubernetes cluster and felt like I'd broken up with someone who was bad for me. Immediate relief."

That emotional response isn't just anecdotal. The cognitive load of maintaining complex infrastructure is real, and it accumulates quietly. Every time you have to context-switch from product thinking to ops thinking, you're paying a mental cost. Over weeks and months, that adds up to a kind of low-grade engineering burnout that's hard to diagnose because the infrastructure is technically "working."

Choosing simpler infrastructure isn't giving up. It's a deliberate bet that your time and attention are finite resources, and you'd rather spend them on the thing that actually differentiates your product.

When Complexity Is Actually Justified

None of this is to say that Kubernetes is always wrong. It's not. If you're running a platform with genuine multi-tenant scaling requirements, or you need fine-grained resource isolation across dozens of services, or your team has dedicated infrastructure engineers who can actually operate a cluster well — then yes, the complexity might be justified.

The key word is justified. The problem isn't Kubernetes. The problem is reaching for Kubernetes before you've earned it. Before you've validated the product. Before you have the users. Before you have the team.

Most side projects will never need it. Most small SaaS businesses will never need it. And the ones that eventually do grow into that complexity can migrate when they get there — with actual data about their scaling needs instead of speculative architecture.

Ship the Thing First

The boring infrastructure movement is really just a subset of a broader philosophy that's been gaining traction in the indie dev community: constraints are productive, and simplicity is a feature you build deliberately.

The developers who are winning with simple stacks aren't less sophisticated than their cloud-native counterparts. In many cases, they're more sophisticated — because choosing the right tool for the actual problem requires more judgment than defaulting to whatever is most impressive.

A $6 VPS running your app and serving real users is worth infinitely more than a perfectly orchestrated Kubernetes cluster running a hello-world endpoint that nobody uses.

Boring infrastructure won't make your GitHub look exciting. It won't win you points in architecture discussions. But it might be the thing that finally lets you ship — and keep shipping — without losing your mind in the process.

That's the whole game, isn't it?

All Articles

Related Articles

Good Enough Is a Feature: How Senior Engineers Are Finally Making Peace With Imperfect Code

Good Enough Is a Feature: How Senior Engineers Are Finally Making Peace With Imperfect Code

SQLite Walked So Your Cloud Database Could Run — Now It's Taking the Throne

SQLite Walked So Your Cloud Database Could Run — Now It's Taking the Throne

Who Pays for the Code the Internet Runs On?

Who Pays for the Code the Internet Runs On?