Smarts in the Nodes not the Network
Sometimes referred to a "Smart nodes and dumb pipes", meaning that Systems aim to be de-coupled and cohesive as possible, and not centrally choreographed.
Composing larger systems around simpler and smaller systems also means needing to own their communication with other systems as well. To allow systems to evolve over time and keep up with the businesses desired pace of change, having them own their communication allows them to change quickly rather than negotiating a change to the pipes that connect them.
- Prefer open protocols (E.g. HTTP, AMQP)
- Services acting like unix-filters, accepting requests, applying logic and returning a response.
- When data is needed to be exported in bulk consider wrapping in a service layer rather than allowing consumers to access the data directly
- A bad example is VAT calculation is done in place-order service within ESB instead of in a separate service (anti-pattern). Makes the calculation less transparent of how VAT is calculated.
- Good example is the use of APIs with BFF
Points for discussion
- Do you have business logic in your integration layer?
- Do you apply business rules in your data transformations?
- If there is business logic is it for your own system’s consumption?