- Sam Newman, Building Microservices (2nd ed.) — ch. on decomposition,
the distributed-monolith trap, integration styles.
- Eric Evans, Domain-Driven Design; Vaughn Vernon, Implementing DDD —
bounded contexts and context maps (the basis for boundaries).
- Martin Fowler — MicroservicePremium, IntegrationDatabase,
StranglerFigApplication, PresentationDomainDataLayering.
https://martinfowler.com/
- Team Topologies (Skelton/Pais) — Conway's Law, team-sized services,
the socio-technical view of boundaries.
- Software Architecture: The Hard Parts (Ford/Richards) — component
coupling, the "is it a service?" decision.
- Tarjan's strongly-connected-components algorithm (cycle detection).
- Topological sort (deployment/build ordering on a DAG — exercise §5.3,
reused in pa-07).
- Dependency-cycle linters (e.g. Go's import-cycle errors,
go mod graph, ArchUnit for the JVM, import-linter for Python).
- Service maps from distributed tracing (gw-11) and service meshes (gw-08).
- Backstage / service catalogs for ownership + dependency metadata.
- pa-02 (contracts), pa-03/04 (async to break coupling),
pa-05 (outbox vs shared DB), pa-10 (cycle/layering checks as
fitness functions), gw-12 (strangler-fig moves as migrations).