# Eventual Consistency

> A conceptual representation of a consistency guarantee in which replicas and projections converge once updates stop arriving.

Record: `architecture:eventual-consistency`
Kind: model
Layer: [Execution Core](https://banes-lab.com/records/layer/execution-core.md)
Severity: contextual
Scope: distributed system, data
Canonical: https://banes-lab.com/ontology#architecture-eventual-consistency

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Asynchronous Communication](https://banes-lab.com/records/architecture/asynchronous-communication.md) and before [Saga Pattern](https://banes-lab.com/records/architecture/saga-pattern.md).

## Repair

- Refactored by: Add Projection, Add Reconciliation, Add Saga
- Detected by: synchronous compensation hacks
- Violated by: assuming immediate cross-service consistency
- Measured by: convergence time, inconsistency window
- Enforced by: consistency tests

## Requires

- [Idempotency](https://banes-lab.com/records/architecture/idempotency.md)
- [Retry](https://banes-lab.com/records/lexicon/retry.md)
- [Reconciliation](https://banes-lab.com/records/lexicon/reconciliation.md)

## Reinforces

- [Availability](https://banes-lab.com/records/lexicon/availability.md)
- [Scalability](https://banes-lab.com/records/architecture/scalability.md)

## Enables

- [Distributed Autonomy](https://banes-lab.com/records/lexicon/distributed-autonomy.md)

## In tension with

- [User Expectations](https://banes-lab.com/records/lexicon/user-expectations.md)
- [Strong Immediate Consistency](https://banes-lab.com/records/lexicon/strong-immediate-consistency.md)
- [CQRS](https://banes-lab.com/records/architecture/command-query-responsibility-segregation.md)
- [CQRS / Eventual Consistency](https://banes-lab.com/records/tension/cqrs-eventual-consistency.md)

## Tensions

- [Eventual Consistency / User Expectations](https://banes-lab.com/records/tension/eventual-consistency-user-expectations.md)
- [Eventual Consistency / Strong Immediate Consistency](https://banes-lab.com/records/tension/eventual-consistency-strong-immediate-consistency.md)

## Severity

- [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)

## Category

- [Event / Messaging / Asynchronous Architecture](https://banes-lab.com/records/architecture-category/event-messaging-asynchronous-architecture.md)

## Reinforced by

- [CRDTs](https://banes-lab.com/records/architecture/crdts.md)
- [CAP Theorem](https://banes-lab.com/records/architecture/cap-theorem.md)
- [Saga Pattern](https://banes-lab.com/records/architecture/saga-pattern.md)
- [Idempotent Consumer](https://banes-lab.com/records/architecture/idempotent-consumer.md)

## Linked from

- [Separate, trade, or mitigate](https://banes-lab.com/software-architecture/principles/separate-trade-or-mitigate.md)
- [The ceiling moves by cost](https://banes-lab.com/software-architecture/scale/the-ceiling-moves-by-cost.md)
- [Causality / Ordering / Distributed Time](https://banes-lab.com/ontology/principles/architecture-category-causality-ordering-distributed-time.md)
- [Event / Messaging / Asynchronous Architecture](https://banes-lab.com/ontology/principles/architecture-category-event-messaging-asynchronous-architecture.md)
- [Scalability / Performance / Optimization](https://banes-lab.com/ontology/principles/architecture-category-scalability-performance-optimization.md)
- [Transactions / State / Concurrency](https://banes-lab.com/ontology/principles/architecture-category-transactions-state-concurrency.md)
- [Event Messaging Async](https://banes-lab.com/ontology/lexicon/lexicon-category-event-messaging-async.md)
- [Quality Attributes](https://banes-lab.com/ontology/lexicon/lexicon-category-quality-attributes.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
