Microservices

framework · computer science · organizing-schema

Architectural style decomposing applications into small, independently deployable services.

Microservices is the architectural style in which an application is composed of small, independently deployable services that communicate through well-defined APIs (typically HTTP/REST or message-based), each owned by a small team and responsible for a single business capability. The term was popularized by James Lewis and Martin Fowler's 2014 article 'Microservices' (martinfowler.com), which articulated nine characteristics including componentization via services, organized around business capabilities, products not projects, smart endpoints and dumb pipes, decentralized governance and data management, infrastructure automation, design for failure, and evolutionary design. The style emerged from earlier service-oriented architecture (SOA) but with deliberately lighter-weight communication, smaller services, and stronger team-ownership ('you build it, you run it'), enabled by container technology (Docker), orchestration (Kubernetes), and continuous-deployment practices. Conway's Law — that organizations design systems mirroring their communication structures — is essential to thinking about microservices: the architecture both reflects and shapes team boundaries.

Originators

James Lewis; Martin Fowler (codification); Adrian Cockcroft (Netflix architecture lead, foundational practice); broader practice at Netflix, Amazon, Spotify, and Etsy in early 2010s high

Year / Decade

Early 2010s practice emergence; 2014 (Lewis-Fowler codification article) high

Primary sources

Lewis, J. & Fowler, M. (2014). 'Microservices' (martinfowler.com), Newman, S. (2015). Building Microservices, Newman, S. (2019). Monolith to Microservices high

Core components

Primary use case

Large-scale internet applications with substantial development teams; organizations enabling independent team velocity; complex domains where bounded contexts naturally decompose; applications requiring independent scaling of components; foundation for cloud-native development; basis for many DevOps and Site Reliability Engineering practices.

Common criticisms

Lineage

Child of
Service-Oriented Architecture
Siblings
Service-Oriented Architecture, Domain-Driven Design, Twelve-Factor App, Event-Driven Architecture
Derived from
Service-Oriented Architecture