Atomic ObjectVlad Surganov14 min readadvanced
Concurrency Control: Your Aggregate Is Single-Threaded. Your Cluster Isn’t.
Summary
This article distinguishes between serialization (preventing concurrent access) and arbitration (permitting access and rejecting losers) in distributed concurrency control. It argues that arbitration should be responsible for correctness, as serialization guarantees are conditional and can fail silently in multi-process environments, leading to data corruption.
- Arbitration is total and holds under network partitions; serialization is conditional and can evaporate.
- Assign correctness to the arbiter and performance to the serializer to build robust distributed systems.
- Database advisory locks can serialize commands per entity cluster-wide, but they serve performance, not correctness.
- Deriving entity IDs from natural keys converts coordination problems into naming problems, solvable without coordination.
Engineers building distributed systems must understand the fundamental difference between arbitration and serialization to prevent subtle data corruption issues that only appear in multi-replica production environments.
7/10



