

DOMAIN DRIVEN DESIGN VIDEO CODE
It is similar to the Inappropriate Intimacy code smell when implementing classes. Cohesion is key within a single bounded context. You should balance them by decomposing the system into as many small microservices as you can until you see communication boundaries growing quickly with each additional attempt to separate a new Bounded Context. Second, you want to avoid chatty communications between microservices.
DOMAIN DRIVEN DESIGN VIDEO DRIVER
First, you want to initially create the smallest possible microservices, although that should not be the main driver you should create a boundary around things that need cohesion. Keep the microservice context boundaries relatively smallĭetermining where to place boundaries between Bounded Contexts balances two competing goals. DDD is about boundaries and so are microservices. The components within those boundaries end up being your microservices, although in some cases a BC or business microservices can be composed of several physical services. And that is explicit in the form of a microservice. You build and refine a domain model that is contained within a boundary that defines your context. For the domain model for each Bounded Context, you identify and define the entities, value objects, and aggregates that model your domain. DDD patterns help you understand the complexity in the domain. Where to draw the boundaries is the key task when designing and defining a microservice.

Simpler responsibilities, like a CRUD service, can be managed with simpler approaches. In addition, DDD approaches should be applied only if you are implementing complex microservices with significant business rules.

But the important part is not the patterns themselves, but organizing the code so it is aligned to the business problems, and using the same business terms (ubiquitous language). Sometimes these DDD technical rules and patterns are perceived as obstacles that have a steep learning curve for implementing DDD approaches. This section introduces the design and implementation of those internal patterns. It also suggests many technical concepts and patterns, like domain entities with rich models (no anemic-domain model), value objects, aggregates, and aggregate root (or root entity) rules to support the internal implementation. It describes independent problem areas as Bounded Contexts (each Bounded Context correlates to a microservice), and emphasizes a common language to talk about these problems. In the context of building applications, DDD talks about problems as domains. Domain-driven design (DDD) advocates modeling based on the reality of business as relevant to your use cases.
