Transactional Event-Sourced Workflows
Distributed Transactions (updating multiple transactional resources simultaneously) are among the hardest problems in Distributed Systems. A process updates the state of the component, then has to tell the rest of the system about it - and those two actions aren't atomic. The update lands, but the notification is lost, or the notification fires but the update is never committed. Let’s see how Event-Sourced Workflows can address the issue by introducing transactionality between updating a workflow's progress and updating the state of the command model (which inherently notifies the world of the change). Firstly, we are going to define what Event Sourcing and Workflows are, and, finally, how they intersect. What Event Sourcing is Event Sourcing stores the full sequence of events that led to an entity's current state, rather than storing the state and overwriting it with every change. The event store (an append-only log) represents the source of truth, and the current state...