Event sourcing
Event sourcing is an extreme implementation of the stronger form of CQRS. It is useful when the original Bounded Context database isn't used at all to retrieve information but just as a source of truth, that is, for recovering from failures and for software maintenance. In this case, instead of updating data, we simply add events that describe the operation that was performed: deleted record Id 15
, changed the name to John in Id 21
, and so on. These events are immediately sent to all the dependent Bounded Contexts, and in the case of failures and/or the addition of new queries, all we have to do is to reprocess some of them. Event reprocessing can't cause problems if events are idempotent, that is, if processing the same event several times has the same effect of processing it once.
As discussed in Chapter 5, Applying a Microservice Architecture to Your Enterprise Application, idempotency is a standard requirement for microservices that communicate through...