Contributed by Rinat Abdullin
The concept of Event Sourcing has been used for decades but has more recently been popularized by Greg Young by applying it to DDD [Young, ES].
Event Sourcing can be used to represent the entire state of an Aggregate (10) as a sequence of Events (8) that have occurred since it was created. The Events are used to rebuild the state of the Aggregate by replaying them in the same order in which they occurred. The premise is that this approach simplifies persistence and allows capturing concepts with complex behavioral properties.
The set of Events representing the state of each Aggregate is captured in an append-only Event Stream. This Aggregate state is further mutated ...