One of the biggest brain speed bumps for people who come from a centralized data-model first \ RDMBS world is the issue of duplicates. "What if we have duplicate names?" "What if we have duplicate accounts?" etc. This can be of special concern in distributed systems, where your aggregate roots may be created in different places.
Before I engage in any sort of implementation, I have several business questions that must be answered first:
- What is the business impact of something like this happening?
- Under what exact circumstances / business operations could this issue occur?
- What are the chances of this happening? Or, how big is the window of opportunity for this to occur?
- Is it possible to mitigate the chances of it happening through design of the business operations?
- Can it be automatically detected?
- How quickly can it be detected after the issue occurs?
- Can it be compensated (fixed) after occurring?
- Can the compensation be automated and transparent?
99% of the time, it turns out that set based concerns, aren't.