You Don't Need Kubernetes Yet: A Pragmatic Scaling Guide for Growing Startups
Last year, a startup founder in Dubai reached out to me for help. His SaaS platform had about 2,000 daily active users. His monthly AWS bill was over $18,000.
When I looked at the architecture, I found a full Kubernetes cluster, 6 microservices, a message queue, a service mesh, and a dedicated DevOps contractor managing it all. For 2,000 users.
The platform could have run comfortably on a single well-configured server costing under $200 per month. The founder had been sold an enterprise-grade architecture by his previous development team — an architecture designed for problems his company didn't have and might never have.
The Scaling Maturity Model: Know Where You Are
Stage 1: The Smart Monolith (0 to 50,000 Daily Active Users)
At this stage, your entire backend should be a single, well-structured application. One codebase. One deployment pipeline. One server (with a replica for redundancy). This is not a compromise — this is the correct architecture for this stage.
A well-built Node.js monolith with Express or NestJS, connected to a single PostgreSQL or MongoDB database, can comfortably handle 50,000 daily active users on a cloud instance costing $100-300 per month.
The key word is "well-built." A smart monolith has clear internal boundaries — code organized into modules (users, payments, notifications) each with its own folder structure and service layer. But they all run in the same process, share the same database, and deploy together.
Why this matters: Your team ships features fast because there's no inter-service communication to debug. Your deployment is one command. Your debugging is one log stream. Your new developer onboards in days, not weeks.
Stage 2: The Optimized Monolith with Strategic Extraction (50,000 to 500,000 DAU)
Your monolith is getting heavier. Response times are creeping up. This is where most teams panic and jump straight to microservices. Don't.
Instead, apply targeted optimizations and extract only the components that genuinely need to be separate:
- Add a caching layer. Redis for application-level caching and session management. This alone can reduce database load by 60-80% for read-heavy applications.
- Extract one or two "hot" services. Identify components causing scaling bottlenecks — real-time notifications, media processing, or search — and extract only those.
- Move background jobs out of the main process. Email sending, report generation, data aggregation — use a job queue like BullMQ backed by Redis.
- Upgrade your database, don't replace it. Add read replicas, optimize queries and indexes, implement connection pooling.
Your infrastructure at this stage: 2-3 application servers behind a load balancer, 1-2 Redis instances, 1 primary database with 1-2 read replicas, 1-2 worker servers. Total cost: roughly $500-2,000 per month.
Stage 3: Selective Microservices (500,000+ DAU)
Now — and only now — does microservices architecture become a genuine engineering need. Even then, don't decompose everything. Use a "macro-services" architecture: 4-8 larger services organized by business domain. Each service is a small monolith internally.
Kubernetes becomes genuinely useful here. But even then, managed Kubernetes services (EKS, GKE, AKS) are strongly preferred over self-managed clusters. Running your own Kubernetes control plane is a full-time job.
The Decision Framework: Three Questions
Question 1: "Is your current system actually slow, or does it just feel complicated?" "Complicated" and "slow" are different problems. A weekend of code organization and documentation can solve "complicated." A Kubernetes migration cannot.
Question 2: "How many people are deploying to this system?" If the answer is one team of 3-8 developers, a monolith with good CI/CD is almost certainly the right choice. Microservices provide organizational scaling for multiple teams — if you have one team, microservices add coordination overhead with no organizational benefit.
Question 3: "What's your monthly infrastructure budget versus your engineering salary budget?" If you're spending $500/month on servers and $30,000/month on developer salaries, optimize your development speed — not your infrastructure.
Real-World Savings
The Dubai startup after I simplified their architecture:
| Before | After | |
|---|---|---|
| Architecture | 6 microservices on Kubernetes | 1 NestJS monolith, 2 servers, load balancer, Redis, background worker |
| Infrastructure | ~$18,000/month | ~$400/month |
| DevOps | $4,000/month contractor | $0 — dev team handles it |
| Net Savings | $21,600/month ($259,200/year) |
And the performance? Identical. In some cases, faster — because there was no inter-service network latency and no service mesh overhead.
The Bigger Point: Architecture Is a Business Decision
The best architecture is the simplest one that meets your current needs and can evolve to meet your near-future needs. Netflix needs microservices because they have thousands of engineers and billions of monthly streams. Your 15-person startup does not.
The most valuable skill I bring to a project isn't knowing how to set up Kubernetes. It's knowing when not to.
Originally published on LinkedIn
Related reading
- Monolith, Microservices, or Neither: An Honest Architecture Guide
- The "Big Bang" Rewrite is a Trap: A Risk-Free Strategy for Legacy Modernization
- We Migrated a Legacy Java Backend to Node.js — Without a Single Day of Downtime. Here's How.
- The 'Context Window' Paradox: Why Fragmented Microservices Are Sabotaging Your AI Strategy
Not sure whether to split the monolith?
Tell me your user count, team size, and the part that hurts most. I will tell you whether your architecture is actually the problem — and I have talked plenty of founders out of a migration they did not need.




