Microservices
Splitting an app into many small, independently-deployable services — team autonomy and independent scaling, at the cost of distributed complexity.
Microservices is an architecture that splits an application into many small, independently deployable services, each owning one capability and often its own database, communicating over the network. It buys independent deployment, scaling, and team ownership — at the price of distributed-systems complexity.
Worked example: checkout, catalog, and recommendations become separate services, each owned by a team that deploys on its own cadence and scales independently — the recommendations service can scale up for a sale without touching checkout. Gotcha: microservices turn in-process function calls into network calls — now you have latency, partial failure, distributed transactions, versioning, and observability spread across services — so the boundaries must be drawn right (usually along bounded contexts); done prematurely or with wrong boundaries, it is a distributed monolith that combines the downsides of both.