Events and messaging

5 min read

Event Sourcing: Why Keep the History of Changes Instead of Only Current State

A normal database answers “what is true now.” Event Sourcing also tries to preserve “how did we get here” — the sequence of business events from which state can be reconstructed.

In many systems, the previous state disappears after an update. A balance changes, an order moves to another status, customer data is updated — and the database keeps only the result.

Sometimes the business needs more than the result. It needs to know which events created it, in what order, and why.

What problem are we solving?

Event Sourcing stores a sequence of events rather than only the current state: order created, item added, payment confirmed, address changed.

Current state can be rebuilt by applying those events. Practical systems often use snapshots and separate read models for performance.

The key difference is that history becomes part of the primary data model, not a secondary log.

What does the business gain?

The main value is explainability of important changes.

If the company needs to understand why a balance, status, or contractual state looks the way it does, it has not only the current value but the chain of events that produced it.

This can reduce the cost of investigations and disputes and enable new scenarios: rebuilding state under new rules, creating new analytics from old history, or reconstructing derived views.

But the benefit appears only when the history itself has business value. Keeping every change “just in case” is an expensive way to create a complicated system.

What does the team gain?

The team gets a complete record of domain changes and can build different views from the same event stream.

But the design model changes. Events need versions, old events cannot be casually rewritten, state reconstruction must work, and projections need maintenance.

Debugging becomes both stronger and harder: the history exists, but the team must understand how to interpret it.

What does the customer gain?

The customer may get a more transparent product: operation history, clearer explanations of changes, and a recoverable sequence of actions.

But customers do not benefit from the technology itself. If the business does not turn the history into useful product behavior, Event Sourcing remains internal complexity.

What do we pay for it?

The price is high: more complex data modeling, migrations, testing, storage, and team training.

Event evolution is especially difficult. Code changes, but events created years ago must remain understandable.

Eventual consistency may also appear when read models are updated asynchronously.

When do you not need Event Sourcing?

If the business only needs current state and a conventional audit log, Event Sourcing is probably excessive.

It is a poor fit for simple CRUD where history creates no additional value and does not influence decisions.

What should we ask before deciding?

In the end

Event Sourcing turns history from a side log into the source of truth.

For the business, that is justified when the question “how did we arrive at this state?” is important enough to pay for a more complex data model and its long-term maintenance.