Concepts

Microservices

Architectural style structuring an application as a collection of small, independent, deployable services, each with its own business logic and data.

seed#microservices#architecture#distributed-systems#api#decoupling

What it is

Microservices are an architectural style where an application is composed of small, independent services communicating over the network (HTTP, messages, events). Each service owns its domain, data, and deployment lifecycle.

Characteristics

  • Deployment independence: each service deploys separately
  • Data ownership: each service has its own database
  • Technology heterogeneity: each service can use a different stack
  • Autonomous teams: one team per service (or group of services)

Microservices vs Monolith

AspectMonolithMicroservices
DeploymentAll togetherIndependent
ScalingVerticalHorizontal per service
ComplexityIn the codeIn the infrastructure
ConsistencyACID transactionsEventual consistency

When NOT to use microservices

  • Small teams (fewer than 5 people)
  • Early-stage product (undefined domain)
  • No distributed systems experience
  • When a modular monolith is sufficient

Associated patterns

Why it matters

Microservices allow independent teams to develop, deploy, and scale services autonomously. But their operational complexity is significant — they require observability, service mesh, distributed data management, and an ownership culture. They are not the default answer.

References

Concepts