L Peter Deutsch: The Fallacies of Distributed Computing
Snippet from: The Wikipedia Article, along with my own notes
- The network is reliable : Think about error-handling on network failures. Use the following patterns: Timeouts, Retries, Circuit breakers, Graceful Degradation.
- Latency is zero : Think about bandwidth requirements and packet loss. Use the following patterns: Small payloads, Compression, Asynchronous Communication, Perceived Progress, Timeouts, Graceful Degradation.
- Bandwidth is infinite : The same as above. Think explicitly about bottlenecks in Network traffic. Use the following patterns: Caching, Etags.
- The network is secure : Think about encryption, compliance, data risk. Understand the trade-offs with speed and simplicity. Prioritize security over the network for any sensitive data.
- Topology doesn't change : Think about local state, tolerance for staleness, co-ordination overheads, recovery mechanisms for split brains, inability to reach endpoints.
- There is one administrator : Remember to test the end-to-end flow and think through production components not controlled by you.
- Transport cost is zero : Think through data transfer costs in cloud environments. Monitor payload sizes.
- The network is homogeneous : Think about connection drops, reconnects, client timeouts. Use the following patterns: Idempotency, Eventual Consistency
Published On: Tue, 11 Aug 2020.