Integrating with other subsystems
For any large system, it is necessary to divide the system into a set of manageable subsystems. In Chapter 2, Defining Boundaries and Letting Go, we discussed the concept of autonomous subsystems. Like autonomous services, these subsystems employ bulkheads to protect themselves from each other. Each autonomous subsystem is fortified in its own cloud account, has its own event hub, and only exposes a set of external domain events for inter-subsystem communication.
We can then create arbitrarily complex systems by connecting autonomous subsystems in a simple fractal pattern. This system topology is depicted in Figure 7.7:
The nodes in the diagram that are connected across the subsystems represent the egress and ingress ESG services. In this section, we will cover the tactical aspects of transforming between internal and external domain events and connecting the subsystems...