Domain Driven Design…
Basically that’s why it is really hard to build DDD samples.
One more thing: the shape, call it high level architecture if you like, is driven by the domain but the implementation (and the public API) is driven by the domain and by the context and in the context there are also non functional requirements, so using a relational database or a document one changes the implementation and changes the public API letting us say once again that DDD and general purpose are orthogonal.
.m