pa-01 — References

Decomposition & boundaries

  • 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.

Algorithms used

  • Tarjan's strongly-connected-components algorithm (cycle detection).
  • Topological sort (deployment/build ordering on a DAG — exercise §5.3, reused in pa-07).

Tools that do this for real

  • 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).