You want microservices, but do you need them?

Overall sentiment

  • Many commenters say they don’t “want” microservices; they want simpler ways to structure and deploy systems (monoliths, SOA, “macro/mini/goldilocks services”).
  • Microservices are seen as over‑applied, culturally driven (ZIRP, resume‑driven development, hype), and often unnecessary for typical loads.

When microservices (or multiple services) do make sense

  • Distinct workloads or resources:
    • GPU/ML workloads, heavy reporting, or time‑series/OLAP/search engines needing different hardware or data stores.
    • Regulatory boundaries (PCI/HIPAA) or clearly separate business lines.
  • Organizational scale:
    • Many teams owning different domains, needing independent deployment cadences and blast‑radius limits.
  • Operational needs:
    • Separately patching high‑risk vs high‑velocity components.
    • Service‑oriented architectures with a few well‑bounded services (auth, data service, GPU worker, etc.).

Common failures / “distributed monoliths”

  • Multiple tiny services per engineer, arbitrary splitting by team rather than true domain boundaries.
  • Shared databases across “microservices” without proper APIs, leading to tight coupling and painful schema evolution.
  • Extreme fragmentation (e.g., gRPC services for trivial queries) and “one RPC per function” thinking.
  • Kubernetes + microservices stacks that collapse under modest load and add huge cognitive and operational overhead.

Databases and data modeling

  • Strong emphasis that “good software is downstream of good data modeling.”
  • Shared, uncontrolled databases are described as “global variables”; microservices at least forced some teams to improve DB hygiene.
  • Disagreement on DB-per-service:
    • Some like shared DB behind a well‑defined API.
    • Others argue true service ownership of a table avoids distributed‑monolith lockstep changes but sacrifices easy joins.

Infrastructure: Kubernetes vs simpler stacks

  • Many prefer Docker/Podman + Compose (sometimes with Terraform) for local dev and small deployments.
  • K8s is seen as worth it only for very large, fast‑scaling, multi‑machine environments with dedicated ops expertise.
  • Pain from maintaining separate local (Compose) and prod (K8s/Nomad) configurations is common.

Alternative architectures and tools

  • Strong interest in:
    • Modular monoliths and SOA; “miniservices” or “goldilocks services” sized around real domains or teams.
    • Single executables/uberjars or containers as the deployment unit.
    • BEAM (Erlang/Elixir) for “microservices inside a monolith” via lightweight processes.
    • WebAssembly modules as self‑contained components.
  • Some note AI tools handle smaller, focused services more easily; others say AI benefits from monolith‑level context.