CAP Theorem TL;DR
I wanted to do a TL;DR; on the CAP theorem, because what distributed systems blog would this be without mentioning it.
In 1998, Eric Brewer proposed a theorem, that distributed systems must make tradeoffs and cannot provide all capbilities imaginable. In particular, Brewer singled out 3 distinct areas that this tradeoff involves.
Consistency
This is about making sure that events happening in your system can be acknolwedged by the entire system. Or, to quote Wikipedia’s entry, your reads acknowledge the latest writes.
Availability
This property implies that clients will receive a non-error response to their requests.
Partition Tolerance
Systems that are partition tolerant can function and recover under terrible network conditions.
The premise is that you can only pick 2 of the above. The plot twist is that if you don’t have a system that is tolerant of partitions then you don’t really have a distributed system.