Open aschrijver opened 3 years ago
I just found The DDD Paradox with a useful insight:
DDD is a silver bullet [..] I need DDD strategic patterns to understand a domain deeply enough, to decide whether DDD tactical pattern are relevant, if any. Said another way: strategic patterns are useful to understand any domain, whereas tactical patterns may not be relevant to your context.
CQRS is definitely not a silver bullet, neither are Event Sourcing, Repositories, Entities or Value Object. But DDD in its strategic aspects (domain analysis, bounded context, etc) is pretty much useful all the time. [..]
This is the DDD paradox, DDD is an approach that even helps you determine when you don’t need it, which makes it pretty much universal.
+100 on
DDD is a silver bullet [..] I need DDD strategic patterns to understand a domain deeply enough, to decide whether DDD tactical pattern are relevant, if any.
We didn't introduce strategic patterns at the beginning, because we believe that it's easier to start with tactical patterns. But strategic patterns are more important than tactical patterns :wink: The good news is that we are already working on the next parts of the series, where we are covering them!
This is just a FYI of a consideration I am making currently about how to implement User Management.
The article series advises to go with straightforward CRUD to implement user management. This is certainly prudent if you know that you only need very basic user management features. In many ocassions I think the amount of these features start to warrant following a DDD approach too.
I wrote some of the features I need, and think I'll choose the latter approach:
User (generic domain)
Standard, not core to the service this subdomain has use cases for User stakeholders:
This list is not yet even complete, e.g. I need 'Export user data' and 'Anonymize user content' for GDPR-compliance, and there are touchpoints to other subdomains, like Admin (with Auditing), Reporting (with Dashboard config), Notification (user-type differentiation), etc.