How a system is divided into modules and services, which way dependencies point, and how the parts communicate.
Topics
- Layers and Dependency Direction
- Keeping core logic independent of frameworks, databases and delivery mechanisms.
- Modular Monoliths and Services
- When one deployable with strong internal boundaries beats many services, and when splitting pays for itself.
- Ports and Adapters
- Isolating external systems behind interfaces so they can be swapped, faked in tests or replaced.
- Synchronous and Asynchronous Communication
- Direct calls, queues and events, and the coupling and failure modes each one creates.
- Enforcing Boundaries
- Module rules, dependency checks and architecture tests that keep boundaries intact across many hands and many agents.