WernerMairl (2) [Avatar] Offline
The "Special Offers Microservice" contains a EventStore for all the events raised by the "Special Offers Domain Model"
Correct ?

Which type of information is stored inside the "SpecialOfferstStore", or in other words:
i'm able to rebuild the "Special Offers Store" by re-playing the Event-Store ?

The same Question using Chapter 5.1

3 types of data
- (type 1) data belonging to the capabilities
- (type 2)raised event data
- (type 3) read models

Question: it is/should be possible to rebuild type 1 by doing a full replay of Type 2 ?

thank you

c.horsdal (64) [Avatar] Offline
As is so often the case, the short answer is "it depends".

The longer answer is that being able to recreate the state of the domain objects - or in DDD parlance the aggregates - from the stored domain events can be a very useful feature, and is the essence of what Event Sourcing is all about. But it is not a prerequisite for what I do in the book. Sometimes, when talking about Event Sourcing, people distinguish between domain events - which are raised for every state change, and can be replayed to recreate the state of the aggregate - and integration events - which only raised when something of broader interest happens, and which are meant to be used by other services. It is the last category of events I raise in the code in the book.

However, one does not preclude the other. Some of your microservices could be implemented using Event Sourcing internally and at the same time expose integration events to other services through a feed.
Meanwhile other microservices might store state in a traditional normalized model while also still raising certain integration events deemed interesting to other services.
c.horsdal (64) [Avatar] Offline
I wrote a slightly longer and better explained answer on my blog: http://www.horsdal-consult.dk/2017/02/event-based-collaboration-does-not.html