## TL;DR

Microservices architectural style structures an application as a collection of loosely coupled, independently deployable services. Each service owns its data, communicates via APIs, and can be developed/deployed/scaled independently. Contrasts with monolithic architecture (all-in-one).

## Core Explanation

Key principles: decentralized data management (each service has its own database), smart endpoints/dumb pipes, design for failure (circuit breakers, retries, bulkheads). Challenges: distributed complexity, network latency, data consistency (eventual consistency), service discovery. When NOT to use microservices: early-stage products, small teams, simple domains.

## Further Reading

- [Building Microservices (2nd Edition, Sam Newman)](https://www.oreilly.com/library/view/building-microservices-2nd/9781492034018/)