Learn to build reliable, robust distributed systems
Building distributed systems is hard. Fortunately, there is a robust body of mathematical research from which we can draw inspiration. Idempotent endpoints prevent duplication in the face of repeated messages. Commutative operations tolerate messages arriving out of order. Conflict Free Replicated Data Types (CRDTs) ensure that systems approach a consistent state as they exchange information.
Knowing that your systems meet all of these criteria can be difficult. As developers add features, they run the risk of introducing defects in previously correct code. As long as we leave it up to individuals to continually prove the correctness of increasingly complex systems, the pace of development will gradually decrease over time.
This book provides guidance and patterns for building distributed systems using the power of immutable data structures. These systems will be idempotent, commutative, and associative. They will tolerate duplicated and out-of-order messages. They will converge over time, detect concurrent changes, and provide users the ability to intelligently resolve conflicts.
With these techniques, you will build autonomous microservices, which don't need to wait on one another to make decisions. You will build mobile applications that cache data for offline use and queue user actions to sync up later. You will construct collaborative systems that respond in real time as other users make changes.