The CAP theorem is often used to classify distributed systems, and the “two out of three” rule is often quoted. But the CAP theorem is widely misunderstood. What are the exact terms of the CAP Theorem? How does it differ from Brewer's original CAP Conjecture? Where does CAP fall short of meeting practical engineering expectations?
Let us review the definitions and proof of the CAP Theorem, see some hidden assumptions, and attempt to apply these to modern distributed systems. We will challenge the common misconception that systems should be defined by CAP properties, or, indeed, that the CAP Theorem model is one to pursue. We discuss the conjecture, the theorem, and what we can expect to achieve in modern distributed systems.
We will apply logic, math, engineering principals and a pragmatic approach.