DEV Community

Daniil Kornilov
Daniil Kornilov

Posted on Edited on

Nine architecture choices small teams should question

Disclosure: This article was created or edited with AI assistance. It is educational guidance, not a report of measured results. No measured productivity, hiring, sales or income outcome is claimed. Examples are illustrative unless a source is explicitly given.

Architecture choices should reflect a team’s actual requirements, budget and operating constraints. The following are prompts for discussion, not universal rules.

Nine choices worth examining:

  1. Splitting into microservices before the monolith hurts
  2. Adding event-driven flows for simple request-response problems
  3. Building abstractions before repeated pain exists
  4. Reaching for CQRS where CRUD is enough
  5. Choosing Kubernetes before a basic deployment pipeline is stable
  6. Adding caches before measuring bottlenecks
  7. Introducing multiple databases with no clear need
  8. Organizing code by technical layers instead of product areas
  9. Writing giant architecture docs nobody updates instead of short ADRs tied to real decisions

The replacement is not “be simple” in the abstract.

The replacement is to earn complexity with evidence.

Consider a modular monolith when it meets the requirements.
Duplicate a little until the pattern is real.
Use direct calls until coupling becomes a measurable problem.
Deploy the boring way until release pain justifies heavier tooling.
Measure before optimizing.
Keep the default path easy to understand.

A lot of engineering debt comes from solving future problems with present complexity.

Teams feel safe because the system looks “serious,” but they pay for it in slower onboarding, harder debugging, and endless coordination.

Consider the product, team, budget and bottlenecks you actually have.

Architect for that reality.

Top comments (0)