Table of Contents for mobile users: 1:48 | 5.1 Why Used 5:05 | 5.2 Aggregate Rules of Thumb 17:00 | 5.3 Modeling Aggregates 23:05 | 5.4 Choose Your Abstractions Carefully 28:53 | 5.5 Right-Sizing Aggregates 34:14 | 5.6 Testable Units
@FreFreTube2 жыл бұрын
From all the video's about DDD out there Vaughn's are definitly the most straight forward. I found these to be the best DDD learning material I've seen. Thank you Vernon!
@VaughnVernon2 жыл бұрын
Thank you so much for your nice comment. It is good to know you have benefitted from Vaughn's work. To keep informed, please sign up to our mail list on Kalele.io and you will be kept up to date on our latest efforts to help the community.
@CosasCotidianas4 жыл бұрын
Thank you Mr. Vernon for this useful video!
@iankirkpatrick20224 жыл бұрын
Great content and very helpful! Would like to see more emotion in the voice though so it's easier to understand emphasized points or arguments better
@devdaniloambrosio5 жыл бұрын
So didactic! Thanks, Vaughn!
@wowDepressive4 жыл бұрын
Thanks for some practical markers on domain design
@villanuevacarlos142 жыл бұрын
This was really helpful! Thanks
@VaughnVernon2 жыл бұрын
We are very happy to know it was of help to you! For more information join our mail list on Kalele.io.
@abomalek82 жыл бұрын
Very important and nice guide, I guess the most important section in the video is 5.5 that starts @ 28:53
@shaikzuhair85375 жыл бұрын
Thanks for you valuable work..
@ruixue69553 жыл бұрын
5:12 4 Aggregate rules of thumb 6:07 1. protect *business invariants* inside aggregate *boundaries* 5:34 2. design small aggregate 5:44 4. update other aggregates using eventual consistency
@ruixue69553 жыл бұрын
2:34 an aggregate has a few different parts to it 2:43 an aggregate root entity may also hold other entities and value object 2:59 *aggregate root entity* names the aggregate concept as a whole 3:13 it has *global unique identity* 3:25 an aggregate is a transactional consistency boundary 3:30 inside an aggregate everything must be consistent at the end of the transaction 4:34 it's easy to think of an *aggregate as being a transactional boundary*
@rammehar5531 Жыл бұрын
Hello Sir, Sorry to disturbing you, Actually, I have read you book and stuck with the below situation Rule: Reference Other Aggregates by Identity When designing Aggregates, we may desire a compositional structure that allows for traversal through deep object graphs, but that is not the motivation of the pattern. [Evans] states that one Aggregate may hold references to the Root of other Aggregates. However, we must keep in mind that this does not place the referenced Aggregate inside the consistency boundary of the one referencing it. The reference does not cause the formation of just one whole Aggregate. By Vaughn Vernon I have a situation where I am building Two different aggregates Contest and Questions a contests has one to many relationship between contest and question. I am confused is it good choice or not in regard with contest and questions Because I want to use Questions as a Question bank and want to use same question in different contest, contest has a mechanism after publish no one can’t edit the question
@johnwayne27005 жыл бұрын
17:00 What if the second transaction fails? The aggregate roots would be in inconsistent state.
@zartcolwing32185 жыл бұрын
The aggregate root in each aggregate will still be consistent regarding the business rules governing a single aggregate. What will not be consistent is the business relation between the two aggregates. In this case you have to think about issuing a compensation command to revert the first aggregate in a state compatible with the state of the second aggregate. just my guess.
@xavierlevaux6213 жыл бұрын
As explained by Zart, the other aggregate has to take into consideration the event emitted by first aggregate. This means applying some business logic in another transaction. If that transaction fails, this should mean that the event is not consumed and thus must be retried. Now, it could be that the business logic of processing that event decides that a condition is not met in that aggregate. It will then emit another event that will be used to eventually compensate in the first aggregate.