Smarts in the Nodes not the Network
Sometimes referred to as “smart nodes and dumb pipes”, meaning that systems aim to be as decoupled and cohesive as possible, and not centrally choreographed in middleware.
Systems owning their communication with other systems is an important aspect in allowing them to adapt to and keep pace with business change. It allows them to evolve over time without needing to negotiate and coordinate with separate teams and associated delay due to hand-offs, as well as meaning that the knowledge of how a system communicates is contained within the system itself.
- Prefer open protocols, such as HTTP.
- Implement integration adapters to isolate the technicalities of integration, and anti-corruption layers to isolate the translation of business data, between bounded contexts.
- When data needs to be exposed or exported outside the service boundary, wrap this communication in a service layer rather than allowing consumers to access the data directly. This helps prevent business logic leaking out of the system and avoids accidental coupling that may constrain future change.