Event Sourcing

Problem
Traditional applications typically maintain the state of data by continuously updating the data as the user interacts with the application and keeps modifying the data. Continuous updates often involve transactions that lock the data under operation. Some of the problems with traditional applications are:
- Performing CRUD (Create, Read, Update, and Delete) operations directly against a data store impacts performance and responsiveness due to high processing overhead involved.
- In a collaborative domain, parallel updates on a single item of data may lead to conflicts.
- Traditional applications, in general, do not preserve history of operations performed on data and therefore there are no audit logs available unless maintained separately.
Solution
Event Sourcing models every change in the state of an application as an event object. The events are recorded in an append-only store. Application generates a series of events that capture the change that it has applied on data and...