One of the topics that came up a few times (and I noticed quite a number of searches for it) is how the Aggregates and Projections differ or relate to each other. The reason for this confusion is that some parts of the implementation logic are very similar - in particular, the current state of an Aggregate derived from the event log. In this blog post, we will explore the differences and look at some examples.
Read moreEvent Sourcing: Projections
Projections are one of the core patterns used in Event Sourcing. What we understand by ES is persisting changes that are happening in the application as a sequence of events (also called an event stream). With this context in mind we can define a projection as an answer to a question: what is the current state derived from the event stream?
Read moreEvent Sourcing patterns: Replay side effect handling
During the event stream processing sometimes it is desired to perform side effects. The challenge we address in this post is how to perform a replay of an event stream and don't retrigger already performed side effects. It turns out there are a couple of alternatives that can help us solve this problem and the specific solution will depend on needs and the type of event store in use.
Read moreEvent Sourcing Projections patterns: Side effect handling
Running a projection doesn't have to mean that all we can do is to update read models used by APIs. It is possible to handle more complex use cases that involve triggering side effects on other systems, and still keep the code concise and resilient.
Read moreEvent Sourcing Projections patterns: Consumer scaling
Event Sourced systems implemented in tandem with Command Query Responsibility Segregation can handle very high volume of events and still deliver great experience for the users.
Because the Write Stack (command handling) is clearly separated from the Read Stack (query handling) we can prioritise which read models get updated first and which can be updated a bit later in case of a spike in traffic.
Read more