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
| Aspect | Monolith | Microservices |
|---|---|---|
| Deployment | All together | Independent |
| Scaling | Vertical | Horizontal per service |
| Complexity | In the code | In the infrastructure |
| Consistency | ACID transactions | Eventual 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
- Microservices — Martin Fowler, 2014.
- Building Microservices — Sam Newman, 2021.
- Microservice Patterns — Chris Richardson, 2024. Microservices pattern catalog.