Posts tagged “domain-driven design”
Domain repositories provide an alternative to monorepositories and multi-repositories for organizing code. This approach balances the benefits of both while mitigating their disadvantages. By isolating code by domain, domain repositories can improve collaboration, reduce cognitive load, and scale more effectively as the business grows. While there are potential downsides to consider, such as difficulties in splitting or merging domains, the benefits make domain repositories an attractive option for many software development projects.
Read more
Tags domain-driven design, collaboration, team design
One of the challenges of designing distributed systems is balancing the local and global complexity. In some cases, we might want to reduce the local complexity (and cognitive load) by splitting a single system into multiple smaller ones, that are going to be loosely coupled.
That often brings a problem of managing the specification of behaviours of the subsystems in the context of the whole system. Usually, we want to have the specification consistent between the subsystems, but at the same time keep them loosely coupled and independent.
Read more
Tags domain-driven design, bounded context, strategic patterns
Some of you found yourself in a situation, where your company asked you to start working remotely very suddenly. Some of you were already working partially or mostly remotely for some time and found ways of dealing with the challenges it presents. No matter which group you are identifying with - remote communication and modelling isn’t always easy, and each day brings new ideas, tools, discoveries, and challenges.
Read more
Tags domain-driven design, online, collaboration
Designing a good aggregate with the right boundaries and clear responsibilities is not a trivial task. A lot of times when I discuss various design options with people, I learn that they rely on gut feeling or implicit heuristics to guide modelling decisions. In order to make this design process simpler I've decided to create an Aggregate Design Canvas.
Read more
Tags domain-driven design, tactical patterns, aggregates
Designing software systems that are aligned with business often leads to compromises and design tradeoffs. It's usually not feasible to model a system in a way that will in 100% reflect the real world.
Understanding business rules is the first step of getting a useful model, but that's not enough. Modelling them as software often leads to discoveries - we realise that it might not be practical, or even possible to enforce some of the rules.
The right thing to do in such a situation is to go back to domain experts and discuss the trade offs we are willing to make. That might mean that we will have to give up on implementing a strongly consistent Invariant and replace or support it with a Corrective Policy.
Read more
Tags domain-driven design, aggregates, design
Couple of months ago, just before the DDD Europe conference a question "Why there is no DDD community in London" struck my mind and didn't let me sleep (literally). If you think about it - it doesn't really make sense - especially that we have a good number of DDD Practitioners (or even book authors) in the city, DDD eXchange is the longest running conference and Skills Matter regularly organises DDD related trainings.
Read more
Tags domain-driven design, london
Previous blog post about Value Objects generated quite a lot of questions about validation in context of VO:
should be the VO responsible for validating its state?
how we should handle this validation?
how to interact with users?
And in this post I will try to answer these questions and show some code samples.
Read more
Tags domain-driven design
Value Object is an object that represents a concept from your problem Domain. It is important in DDD that Value Objects support and enrich Ubiquitous Language of your Domain. They are not just primitives that represent some values - they are domain citizens that model behaviour of your application.
Read more
Tags domain-driven design