A service is a separable unit of a distributed application that owns a distinct functionality and can evolve without coordinating every change through one shared codebase. This structure trades monolithic simplicity for team autonomy and more targeted scaling. section 1.4.2
Compared with a monolith, services change the developer and operations workflow in several ways:
- Teams work against clearer boundaries instead of coordinating every feature change in one repository. section 1.4.2
- Each service can scale according to its own load, avoiding replication of the entire application for one busy function. section 1.4.2
- Separate services remove a shared-codebase bottleneck, but introduce the complexity that makes distributed architecture worth evaluating carefully. section 1.4.2
- Cloud services extend the same delegation idea across layers, from infrastructure resources to managed application capabilities; higher-level services include more operational cost and responsibility. section 1.1.1
Figure 1.20 In a monolith application, all the logic to implement different use cases are bundled together. This push different teams to work on the same codebase and requires them to have complex coordination practices to avoid conflicting changes.
Use the monolith comparison to see how bundled functionality creates shared-codebase coordination costs that services are intended to reduce. section 1.4.2






