Chapter 58. Prepare to Pick Two

Bill de hÓra is chief architect with NewBay Software, where he works on large scale web and mobile systems. He is co-editor of the Atom Publishing Protocol and previously served on the W3C RDF Working Group. He is a recognized expert on REST style and message-passing architectures and protocol design.

Bill de hÓra
image with no caption

SOMETIMES ACCEPTING A CONSTRAINT or giving up on a property can lead to a better architecture, one that is easier and less expensive to build and run. Like buses, desirable properties tend to come in threes, and trying to define and build a system that supports all three can result in a system that does nothing especially well.

A famous example is Brewer's conjecture, also known as Consistency, Availability, and Partitioning (CAP), which states that there are three properties that are commonly desired in a distributed system—consistency, availability, and partition tolerance—and that it is impossible to achieve all three. Trying to have all three will drastically increase the engineering costs and typically increase complexity without actually achieving the desired effect or business goal. If your data must be available and distributed, achieving consistency becomes increasingly expensive and eventually impossible. Likewise, if the system must be distributed and consistent, ensuring consistency will lead at first to latency and performance problems ...

Get 97 Things Every Software Architect Should Know now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.