External input is data outside a service boundary, structured for exchange between services rather than optimized for one service’s internal model. This separation lets internal data models evolve independently when the exchanged data remains service-agnostic. section 17.1
Design external input around these practical properties:
- Keep producers and consumers loosely coupled so an internal model change does not automatically require changes elsewhere. section 17.1
- Prefer immutability: once another service may have consumed the data, avoid altering or deleting it. section 17.1
- Use asynchronous exchange when independent services need real-time flow without synchronous dependencies that can cascade failures. section 17.6
Changing an internal model
A service can reorganize or aggregate its own internal data for performance and usability while continuing to publish service-agnostic external data. Other services can consume that exchange format without adopting the internal reorganization. section 17.1
Figure 17.1 We differentiate between service-internal data, that is, data on the inside, and data exchanged between services, that is, data on the outside.
Use the boundary diagram to distinguish service-internal data, tightly coupled to its managing service, from external data exchanged across services. section 17.1

