Designing distributed applications needs to be done wisely. Strategic Domain-Driven Design (DDD) is an approach for modeling large-scale applications and systems, introduced in the last part of Eric Evans' book Domain-Driven Design.
Domain-driven design is a well-known pattern family that has been established at for quite some time now. Unlike Domain-Driven Design, which focuses on the tactical design in an application, strategic Domain-Driven Design is an approach that is very helpful for the high-level strategic design of an application and distributed software architecture.
It is a pattern family focused on using and defining Bounded Context and thinking explicitly about the different relationship patterns and the required "translation" of similar "concepts" between the bounded contexts. It is helpful to argue and find a good strategic architecture in alignment with the requirements, the domain, and by considering Conway's Law. A context map and a common conceptual core help to understand and improve the overall strategic picture. Especially with the Microservice approach, it is important to define and connect services following the high cohesion - low coupling principles by identifying fitting bounded contexts.
The following chart gives an overview of possible relationships between bounded contexts:
While we have found that this approach is especially useful in designing distributed systems and applications with microservices, we have also extended this approach to provide guidelines for general enterprise architectures.