Don't microservice, do module

Overall Tone and Meta-Discussion

  • Many criticize the article’s absolutist framing (“microservices are the wrong answer”), arguing that strong black‑and‑white takes usually signal shallow experience.
  • Repeated theme: “it depends” – architecture should follow context, scale, org structure, and constraints, not ideology or hype.
  • Several posters lament that nuanced positions are harder to communicate and sell internally than bold, simple prescriptions.
  • Some find the post technically weak and ranty; others think it’s directionally right about overuse of microservices but poorly argued.

Microservices vs Modules / Monoliths

  • Broad agreement that microservices are often misapplied, especially in small teams and early-stage products, where they add heavy operational overhead (testing, deployment, monitoring, debugging, k8s).
  • Many prefer a “modular monolith” or “modulith”: strong internal boundaries, single deployable unit, possibly later split into services.
  • Some point out that monoliths can still be partially available and composed of separate processes (workers, queues) without full microservice fragmentation.

Where Microservices Shine

  • Organizational scaling: independent teams, independent deployments and rollbacks, clearer code ownership, isolation of secrets and APIs.
  • Partial availability and fault isolation: non‑critical services can fail without taking down the user‑critical path.
  • Resource isolation and cost control: scale or right‑size heavy or infrequent workloads (large file processing, GPU-heavy models) without overprovisioning everything.
  • Polyglot teams and reusable services across applications.

Problems and Misuses

  • Microservices often become “distributed monoliths” with tangled dependencies and cascade failures, harder to monitor and reason about.
  • Many issues attributed to microservices are actually organizational: poor communication, cargo‑culting big‑company patterns, underqualified k8s/platform setups.
  • Network boundaries increase latency and complexity; debugging cross‑service failures is harder than in-process code.
  • Critics highlight questionable claims in the article (e.g., dismissing per‑service scaling, ignoring real benefits like partial failure tolerance).

Alternatives and Enforcement of Boundaries

  • Several advocate tooling and process (linters, CODEOWNERS, architectural checks) to enforce module boundaries inside a monolith instead of relying on network separation.
  • Hybrid models are suggested: single binary or monorepo with clear module boundaries that can be deployed as one process, a few services, or many microservices as needs grow.