You Don't Need Kubernetes Yet: A Pragmatic Scaling Guide for Growing Startups

DJ
Deepak Kumar Jha
1 min read

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:

BeforeAfter
Architecture6 microservices on Kubernetes1 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

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.

Get an architecture opinion

Tags:StartupArchitectureNodeJSKubernetesMicroservicesTechnicalStrategy
Deepak J. - Technical Lead

Deepak J.

Technical Lead @ Kosi Digital

Building scalable backend systems, AI integrations, and enterprise platforms. Architected systems serving 60M+ monthly active users.

Building something?

Whether you're starting from scratch or scaling an existing system, we can help. Let's talk about what you're working on.