How to design systems landscapes
With all of these challenges and overheads involved, a lot of scenarios still require distribution. It's important to mention, that there must be enough motivation behind distributing systems. Distribution comes with costs and risks. If it's not necessary to distribute, building monolithic applications is always to be preferred.
Now, let's look into how to design reasonable system landscapes, tailored for business requirements.
Context maps and bounded contexts
Bounded contexts define the application's responsibilities in business logic, behavior, and data ownership. So-called context maps, as described in Domain-Driven Design, represent the entire system landscape. It shows the individual responsibilities, contexts, and belongings of its applications. Bounded contexts therefore fit within a context map to show how they exchange information among each other.
The following shows the context map of the cars domain, including two bounded contexts:
It's advisable...