Designing Data-Intensive Applications - Chapter 8 - The Trouble with Distributed Systems

Earlier the book club of our company has studied excellent book:
This is the best book I have read about building complex scalable software systems. 💪
As usually I prepared an overview and mind-map.
Chapter 8 discovers non-database related problems of distributed systems. DEV teams should consider them when designing distributed software.
- Faults and Partial Failures. The need to build a reliable system from unreliable components.
- Problem 1: Unreliable Networks. Why they happen. How to detect them. How to deal with them. Synchronous and Asynchronous networks. Hybrid networks and emulating hybrid networks.
- Problem 2: Unreliable Clocks. Monotonic Clocks vs Time-of-Day Clocks. What to use and what not to use in different cases. Good practices.
- Problem 3: Knowledge, Truth, and Lies. What is Truth in distributed systems. The Byzantine Generals Problem. System Model and Reality: what to use for what cases.

See also:
- Designing Data-Intensive Applications - Chapter 5 - Replication
- Designing Data-Intensive Applications - Chapter 12 - The Future of Data Systems
- Designing Data-Intensive Applications - Chapter 11 - Stream Processing
- Designing Data-Intensive Applications - Chapter 4 - Encoding and Evolution
- Designing Data-Intensive Applications - Chapter 3 - Storage and Retrieval