AW Dev Rethought

🕵️ Debugging is like being the detective in a crime movie where you are also the murderer - Filipe Fortes

Data Realities: Data Consistency vs Business Reality


Introduction:

Data consistency is one of the most discussed topics in distributed systems. Engineers debate strong consistency versus eventual consistency, argue about CAP theorem trade-offs, and design elaborate synchronisation mechanisms to ensure data stays accurate across systems.

But the real world rarely cooperates with theoretical consistency models. Business operations are inherently messy — orders get placed before inventory is confirmed, payments are processed before fraud checks complete, and decisions are made on data that is hours or days old. The gap between what consistency models promise and what businesses actually need is wider than most engineering teams acknowledge.

Understanding that gap changes how you design data systems and where you spend your engineering effort.


What Consistency Actually Means in Practice:

In distributed systems, consistency refers to whether all nodes in a system see the same data at the same time. Strong consistency guarantees that every read reflects the most recent write. Eventual consistency guarantees that given enough time without new updates, all nodes will converge to the same value.

These definitions come from computer science, not from business operations. A business does not care whether node A and node B agree on an inventory count at the same millisecond. It cares whether customers can place orders, whether those orders get fulfilled, and whether the financial records balance at the end of the day.

The mismatch between the technical definition and the business definition of consistency causes engineering teams to over-engineer solutions to problems that do not actually exist in their domain.


Most Businesses Already Operate on Eventual Consistency:

Before distributed databases existed, businesses operated on eventual consistency without calling it that. A retail store would sell an item, update its inventory ledger at the end of the day, and reconcile discrepancies in the weekly stock count.

Banks process transactions in batches. Airlines oversell seats and handle the consequences at the gate. E-commerce platforms allow orders to be placed against optimistic inventory counts and cancel them later if stock runs out. These are not engineering failures. They are deliberate business decisions that accept temporary inconsistency in exchange for availability and throughput.

Engineering teams that insist on strong consistency in domains where the business already accepts eventual consistency are solving a problem their users do not have while introducing latency and complexity their users will notice.


The Cost of Strong Consistency Is Often Invisible:

Strong consistency requires coordination. In a distributed system, coordination means locks, two-phase commits, or consensus protocols — all of which introduce latency, reduce throughput, and create failure modes when coordination breaks down.

These costs are often invisible during development because test environments have low latency, small datasets, and no concurrent users. In production, the same coordination mechanisms that seemed trivial become bottlenecks under load.

Teams that chose strong consistency for correctness reasons often discover in production that the performance cost is unacceptable, and they end up weakening their consistency guarantees anyway — but now they are doing it reactively under pressure rather than deliberately as a design decision.


Stale Data Is Often Good Enough:

Many engineering teams treat stale data as an inherently bad outcome. In reality, stale data is only a problem when the business decision being made requires current data. Many decisions do not.

A dashboard showing yesterday's revenue does not need real-time accuracy to be useful. A recommendation engine that updates user preferences every few minutes rather than every few seconds does not meaningfully degrade the user experience. A reporting system that runs on data that is four hours old is perfectly adequate for weekly business reviews.

The question is not whether data is stale but whether the staleness matters for the specific decision being made. Engineering teams that answer that question in collaboration with the business make better consistency trade-offs than teams that apply a blanket policy of freshness.


Reconciliation Is an Underrated Tool:

Strong consistency tries to prevent inconsistency from ever occurring. Reconciliation accepts that inconsistency will occur and fixes it after the fact. For many business domains, reconciliation is the more practical and more scalable approach.

Double-entry bookkeeping is a reconciliation mechanism. End-of-day settlement in payment systems is a reconciliation mechanism. Stock audits in retail are a reconciliation mechanism. These patterns have been used for centuries precisely because they work at scale without requiring every participant to agree on the current state at every moment.

Building reconciliation into your data architecture — rather than fighting to prevent every inconsistency in real time — often produces simpler systems that are easier to operate and easier to reason about when something goes wrong.


Consistency Requirements Should Come From the Business, Not the Engineer:

The most common mistake in data system design is letting engineers decide consistency requirements in isolation. Engineers default to stronger consistency than necessary because weaker consistency feels like cutting corners, even when it is the correct trade-off for the domain.

Consistency requirements should be derived from the business consequences of inconsistency. What happens if a user sees stale data for thirty seconds? What happens if two systems temporarily disagree on an order status? What happens if a report runs on data that is six hours old? If the business consequence is acceptable, the weaker consistency model is the right choice.

These conversations require engineers to engage with product and business stakeholders rather than making consistency decisions unilaterally. The result is systems that are appropriately consistent — not maximally consistent.


Conclusion:

Data consistency is a spectrum, not a binary choice between correct and incorrect. The right point on that spectrum depends on the business domain, the consequences of inconsistency, and the cost of the coordination required to prevent it.

Businesses have always operated with imperfect data. The engineering challenge is not to eliminate that imperfection but to understand it well enough to design systems that handle it gracefully — and to resist the temptation to build for a level of consistency that the business neither needs nor would notice.


If this article helped you, you can support my work on AW Dev Rethought. Buy me a coffee


Rethought Relay:
Link copied!

Enjoyed this post?

Stay in the loop

New posts + weekly digest, straight to your inbox.

or

Create a free account

  • Save posts to your vault
  • Like posts & build history
  • New-post alerts

Comments

Add Your Comment

Comment Added!