A blog post on running Docker in production, discussed at length on Hacker News, has reignited debate over whether Kubernetes is the right default for small and mid-sized AI teams. The argument, as laid out in the post and its comment thread, is straightforward: many teams reach for Kubernetes by default even when a single-node or small multi-node Docker Compose setup would meet their needs with far less operational burden.
The Kubernetes Complexity Tax
The case against defaulting to Kubernetes centers on its operational cost. Its learning curve, YAML-heavy configuration, and networking model (service meshes, ingress controllers, cluster management) typically require dedicated DevOps expertise—expertise that early-stage startups often lack the budget to hire. Time spent managing infrastructure is time not spent on model development or data pipelines, which slows iteration for teams that need to ship experiments quickly.
Docker Compose as a Production Option
Docker Compose, long treated as a local-development tool, has become viable for small-scale production deployments. A single docker-compose.yml file can define services, networking, and volumes for an entire stack. Advantages discussed in the source material include:
- Consistency between environments: the same configuration used locally can run in production, reducing environment drift.
- Lower staffing needs: a single engineer can typically manage a Compose-based deployment, unlike a Kubernetes cluster.
- Lower infrastructure cost: a single Docker host is cheaper than a managed Kubernetes service like EKS or GKE for workloads that don't yet need to scale horizontally.
- Faster deploys: updates can go out with a simple
docker-compose up -d, without the overhead of orchestrating a rolling deployment across a cluster.
Where Compose Falls Short
The Hacker News discussion also raised the limits of this approach. Teams generally need to move to a full orchestrator like Kubernetes or Nomad once they require custom-metric autoscaling, a large fleet of interdependent microservices, or zero-downtime deployments across multiple regions. The suggested approach is to migrate when those needs actually materialize, rather than adopting Kubernetes preemptively.
Why It Matters
The discussion reflects a broader pushback against defaulting to complex infrastructure for its own sake—sometimes called 'resume-driven development.' For AI startups operating with limited engineering headcount, the choice between Kubernetes and simpler tools like Docker Compose is a real trade-off between control and speed, and the source material argues that many teams overestimate how soon they'll need the former.