03/24/26

Do You Need Kubernetes?

A practical decision framework for backend teams

5 Min Read

Kubernetes has become the default answer to "how should we run containers in production?" That default is wrong for most teams. The majority of backend applications can run on simpler infrastructure, and the cost of adopting Kubernetes before you need it is higher than most teams realize.

This isn't an anti-Kubernetes argument. K8s solves real problems at real scale. The question is whether your team has those problems today, or whether you're importing complexity to solve issues you don't have yet. This guide covers the real costs, when K8s makes sense, and alternatives including managed containers and infrastructure-from-code with Encore.

What Kubernetes Actually Costs

The sticker price of a managed Kubernetes cluster (EKS, GKE, AKS) is misleadingly low. AWS charges $0.10/hour for an EKS control plane. That's $73/month. Sounds reasonable.

The real cost is everything around it:

  • Cluster infrastructure: Worker nodes, load balancers, NAT gateways, persistent volumes. A minimal production setup with high availability across two availability zones runs $500-800/month in compute alone.
  • DevOps time: Someone has to maintain the cluster. Upgrades, node scaling policies, networking plugins, RBAC, secrets management, ingress controllers. For a team without existing K8s expertise, this is 20-40% of one engineer's time.
  • Tooling: You'll need a CI/CD pipeline that builds images, pushes to a registry, and deploys to K8s. Most teams add Helm, ArgoCD or Flux, cert-manager, external-dns, and a monitoring stack. Each tool has its own learning curve and maintenance burden.
  • Training: Getting a team productive with Kubernetes takes weeks of ramp-up. YAML templating, debugging pod scheduling failures, understanding service networking. This cost is invisible but real.

Add it up: a minimal production Kubernetes setup for a small team costs roughly $11,000/month when you factor in infrastructure, fractional DevOps salary, tooling, and ongoing training. That figure comes from surveying teams running K8s clusters with 3-10 services. It does not decrease as you scale down.

When Kubernetes Makes Sense

K8s earns its complexity when you check several of these boxes:

  • 10+ microservices with different scaling characteristics. Some services need to scale horizontally under load, others are CPU-bound batch processors, others are memory-heavy ML inference. K8s gives you fine-grained control over how each workload runs.
  • Multi-team ownership where different teams deploy independently. K8s namespaces and RBAC provide isolation boundaries that simpler platforms don't offer.
  • Stateful workloads like databases or message brokers that you want to run inside the cluster rather than using managed services.
  • Hybrid or multi-cloud requirements where you need workload portability across providers.
  • Dedicated platform or DevOps team (at least 1-2 people) who can maintain the cluster, respond to incidents, and keep the ecosystem updated.

If you're a 50-engineer organization running 30 services across three teams, Kubernetes is probably the right call. The investment in platform infrastructure pays for itself in deployment velocity and operational consistency.

When Kubernetes Is Overkill

Most teams asking "do I need Kubernetes?" fall into a different profile:

  • Fewer than 10 services
  • Fewer than 5 backend developers
  • Steady traffic patterns without dramatic spikes
  • No dedicated DevOps or platform team
  • Running on a single cloud provider

These teams almost universally don't need Kubernetes. The operational overhead outweighs the benefits. You spend more time managing the platform than building the product.

A few specific scenarios where K8s is clearly overkill:

Early-stage startups: Your priority is shipping features and finding product-market fit. Weeks spent on cluster configuration are weeks not spent on your product. The infrastructure can be migrated later if you outgrow simpler options.

Small service counts: If you have 2-5 services, you don't need a container orchestrator. Managed services like ECS, Cloud Run, or App Runner handle deployment, scaling, and health checks without the K8s tax.

Solo developers or tiny teams: Kubernetes assumes organizational complexity. RBAC, namespaces, resource quotas, network policies. These features serve multi-team organizations. A three-person team doesn't need them.

The Alternatives

Several options sit between "manually SSH into a server" and "run a full Kubernetes cluster":

Managed container services (ECS, Cloud Run, Azure Container Apps) handle scheduling, scaling, and health checks. You define your container and scaling rules. The platform handles the rest. Cost is typically 40-60% less than an equivalent K8s setup.

Platform-as-a-Service (Railway, Render, Fly.io) abstracts even further. Push code, get a running service. Good for prototypes and smaller applications, though you trade control for simplicity.

Infrastructure-from-code takes a different approach. Instead of configuring infrastructure separately from your application, the infrastructure is derived from what your code declares. This eliminates the configuration layer entirely.

Skipping the Infrastructure Layer

Encore is an open-source backend framework for TypeScript and Go that takes the infrastructure-from-code approach. You write standard backend code using Encore's SDK, and the framework understands what infrastructure your application needs.

import { SQLDatabase } from "encore.dev/storage/sqldb"; import { api } from "encore.dev/api"; const db = new SQLDatabase("orders", { migrations: "./migrations", }); export const getOrder = api( { method: "GET", path: "/orders/:id" }, async ({ id }: { id: string }) => { return db.queryRow`SELECT * FROM orders WHERE id = ${id}`; }, );

That code declares a database and an API endpoint. When you deploy with Encore Cloud, it provisions the actual AWS or GCP infrastructure in your own cloud account: RDS or Cloud SQL for the database, compute, networking, load balancing, TLS, and CI/CD. You don't write Kubernetes manifests, Terraform config, or Dockerfiles.

This matters for the teams described above: small teams, early-stage companies, and developers who want production-grade infrastructure without the platform engineering overhead. Encore Cloud costs $49/member/month, which is a fraction of the $11k/month K8s setup, and the infrastructure runs in your own AWS or GCP account with no vendor lock-in.

Making the Decision

FactorSkip K8sConsider K8s
Services< 1010+
Developers< 510+
DevOps headcount01+ dedicated
Cloud providers12+
Traffic patternSteadyHighly variable
Monthly infra budget< $5k$10k+

If most of your answers fall in the left column, you don't need Kubernetes today. Adopt it when the complexity of your system demands it, not before.

Ready to escape the maze of complexity?

Encore Cloud is the development platform for building robust type-safe distributed systems with declarative infrastructure.