CRDTs and Eventual Consistency Anti-Patterns on AWS
Quick summary: Last-write-wins is not a CRDT—it is how Global Tables lose cart merges. When to use counters, OR-Sets, and conflict-free merges vs when to keep a single Aurora writer.
Key Takeaways
- June 2026: Multi-Region active-active without a merge strategy is how eventual consistency anti-patterns ship—users see flickering state, not “high availability
- Benchmark pattern (hypothetical workload) — collaborative doc editor on DynamoDB with LWW-Register CRDTs, 800 concurrent editors, 2
- 1M ops/day, merge conflicts drop from 14% (last-write-wins) to 0
- 3% (CRDT) at cost of 38% larger item payloads
- Anti-patterns 1
Table of Contents
June 2026: Multi-Region active-active without a merge strategy is how eventual consistency anti-patterns ship—users see flickering state, not “high availability.”
Symptom → mechanism → AWS control
| Production symptom | Mechanism | AWS control |
|---|---|---|
| Lost edits under concurrent writes | Last-write-wins silently drops updates | DynamoDB conditional writes, CRDT merge in application layer |
| Unbounded item growth | CRDT tombstones accumulate | DynamoDB TTL on compaction checkpoints, periodic snapshot |
| Divergent replicas after replay | Eventual consistency without merge semantics | Kinesis event sourcing with deterministic merge function |
Opinionated take: CRDTs solve collaborative state—not money—and pair best with DynamoDB or ElastiCache when you can tolerate seconds of convergence, not milliseconds of serializability.
Benchmark pattern (hypothetical workload) — collaborative doc editor on DynamoDB with LWW-Register CRDTs, 800 concurrent editors, 2.1M ops/day, merge conflicts drop from 14% (last-write-wins) to 0.3% (CRDT) at cost of 38% larger item payloads.
Anti-patterns
- RWM on same record across Regions without merge → lost updates
- Cache-aside as source of truth across Regions
- SQS at-least-once without idempotent handlers (looks like consistency bug)
CRDTs (when they help)
Conflict-free replicated data types (counters, OR-Sets, LWW-Element-Set with care) suit collaboration and device sync. On AWS, implement in app layer or use services with documented merge (DynamoDB counters are not full CRDTs).
Opinionated take: Prefer single-writer Aurora Global for financial aggregates; use CRDT-style merges only when product accepts semantic merge rules in writing.
AWS services map
| Pattern | Service |
|---|---|
| Active-active items | DynamoDB Global Tables + version attribute |
| Session sync | ElastiCache + sticky + short TTL |
| Ordered workflow | SQS FIFO + dedup |
What to do this week
- Document merge function for each Global Table entity.
- Add integration test simulating concurrent cross-Region writes.
- Metric: conflict resolution count per hour.
More in This Track
Part of the Engineering Guides library (June 2026).
- Previous: Part 1
- Next: Part 3
- Browse tracks: Engineering Guides hub
What this guide doesn’t cover
Distributed locks—next guide in track.
AWS Cloud Architect & AI Expert
AWS-certified cloud architect and AI expert with deep expertise in cloud migrations, cost optimization, and generative AI on AWS.