ACID 2.0: Designing Better APIs and Messages


Databases uphold 4 promises. Transactions are Atomic, Consistent, Isolated, and Durable. That's fine for the small, directly-connected scope of a database, but what about distributed systems? How can we ensure correctness across APIs and message queues? When we cross compute boundaries, we need a different set of promises. We need to know that the system will behave correctly when messages arrive out of order. It needs the ability to retry on delivery failure without causing duplication. And we must be sure that all nodes converge even if they don't all subscribe to the same queues. We need ACID 2.0. A system that is ACID 2.0 is: Associative, Commutative, Idempotent, and Distributed. Each of these guarantees is vital for the correct behavior of a system. And better yet, they provide guidance for designing Web APIs and service bus messages. They are precisely defined, so that we can verify with certainty whether the systems we build uphold these promises, or whether we are setting ourselves up for failure. Build better Web applications, mobile apps, and microservices. Make them resilient. Make them ACID 2.0.


  • Michael L Perry

    23 Recordings
    Software is math. Every class is a theorem. The compiler is the proof. And unit tests check our work. Michael wrote The Art of Immutable Architecture, a book on applying mathematics to building distributed systems. Learn more at Michael has recorded Pluralsight courses on Distributed Systems, XAML Patterns, and Cryptography, in addition to Provable Code. Formerly a Microsoft MVP for seven years, he maintains the spoon-bending Assisticant and Jinaga open-source libraries. You can find his videos about distributed systems at And he helps his clients at Improving benefit from the power of software mathematics.

Recorded At:

Recorded on:

May 14, 2020

More Info: