Dissecting the Event Sourcing pattern
The Event Sourcing pattern provides the foundation for eventual consistency and the subsequent flexibility that allows us to create reactive and evolutionary systems. It essentially proposes turning events into facts, instead of just ephemeral messages. We accomplish this by retaining all events and storing them in perpetuity. The events serve as an audit trail of historical activity so that we do not lose information.
Unfortunately, the Event Sourcing pattern has a reputation for making systems more complex. This concern is not unfounded. However, with the right alterations, communicating by events and treating them as facts, actually produces systems that are more straightforward and flexible. A few examples will help make this clear. Let's look at an example without event sourcing, another one with what I refer to as Traditional Event Sourcing, and a third example with the altered form, which I refer to as Systemwide Event Sourcing.
...