Microservice architecture splits a system into small, independently deployable services, each built around one business capability and owned by one team. Services hide their data behind contracts; nothing shares a database or a release train.

The style buys organizational and operational independence — and pays for it in distributed-system complexity. Its value depends less on service size than on getting the boundaries right.

Microservice architecture: clients reach independently deployable services through an API gateway; each service owns its data store, communicates via APIs and asynchronous events, and is owned by one team.

How It Works

  • Boundaries follow business capabilities (bounded contexts); each service encapsulates one and owns its data store exclusively.
  • Services communicate through versioned APIs or asynchronous events; an API gateway handles routing, authentication, and rate limiting at the edge.
  • Each service has its own pipeline: build, test, deploy, and scale without coordinating with other teams.
  • Resilience is explicit: timeouts, circuit breakers, and bulkheads guard every cross-service call.

Failure Modes

  • A distributed monolith emerges: services share a database or deploy in lockstep, keeping the coupling while adding the network.
  • Boundaries cut wrong, so one feature routinely changes three services — coordination returns as the dominant cost.
  • Synchronous call chains stack latencies and couple availability; one slow service degrades every caller upstream.
  • The platform bill arrives early: teams drown in pipelines, brokers, and dashboards before any independence pays off.

Verification

  • Each service deploys to production alone; deployment logs show no coordinated multi-service releases.
  • Chaos check: killing one non-critical service leaves every other capability serving, with fallbacks engaged.
  • Traces show user-critical paths crossing at most a defined number of synchronous hops.
  • A change-coupling report over commits shows features landing in one service; recurring cross-service features flag wrong boundaries.
  • Self-contained systems decompose coarser and keep the UI inside each unit — often the calmer first step.
  • A modular monolith delivers boundary discipline without the network; “monolith first” remains sound advice.
  • API gateway, saga, event-driven architecture, and circuit breaker are this style’s standard companions.

References

  • Microservices — James Lewis, Martin Fowler (2014)
  • Building Microservices, 2nd ed. — Sam Newman (O’Reilly, 2021)
  • Microservices Patterns — Chris Richardson (Manning, 2018)
  • MonolithFirst — Martin Fowler (2015)