Problem
Teams default to either strongest consistency everywhere, paying latency and availability costs, or weakest everywhere, producing visible anomalies. Neither choice follows from what the business actually needs.
Also known as: choosing-consistency-level, consistency-level-decision
Choose the weakest consistency guarantee that still protects each business invariant, per dataset and per operation.
Teams default to either strongest consistency everywhere, paying latency and availability costs, or weakest everywhere, producing visible anomalies. Neither choice follows from what the business actually needs.
Consistency is a menu, not a switch. Choosing from it well means starting with business invariants rather than database defaults. A shopping cart tolerates seconds of staleness; a payment balance does not. Select the cheapest guarantee that still keeps each invariant true.
Involve product owners, since they know which anomalies customers would actually notice or complain about. Engineers alone tend to over-estimate or under-estimate the harm of staleness.
Walk through operations and classify them.
Operation Invariant at risk Model chosen
debit account no overdraft linearizable / strong
show own profile edit user sees own change read-your-writes (session)
product view count none material eventual
unique username uniqueness linearizable on write
Then map each row to concrete settings, such as DynamoDB strongly consistent reads, Cosmos DB session consistency, or quorum sizes in a leaderless store. Publish the mapping so that downstream teams know what to expect. Validate with tests that inject replication lag or partitions.
Low: analysis effort
Medium: per-operation configuration and testing
High: reasoning about anomalies is hard
Using stale reads for a check-then-act sequence, causing overselling
Assuming a store default matches the requirement
Mixing models without telling downstream consumers