Menu
Dev.to #systemdesign·July 1, 2026

Understanding the Fallacies of Distributed Computing

This article introduces the fundamental "Fallacies of Distributed Computing," which are common, incorrect assumptions developers make when designing distributed systems. Recognizing these fallacies is crucial for building robust and reliable software architectures, as ignoring them leads to significant challenges in reliability, performance, and security.

Read original on Dev.to #systemdesign

Introduction to Distributed System Fallacies

The Fallacies of Distributed Computing were originally articulated by L. Peter Deutsch and others at Sun Microsystems. They highlight inherent complexities and unreliable aspects of networked systems that are often overlooked by developers accustomed to single-process, local applications. Designing distributed systems effectively requires proactively addressing these challenges rather than assuming ideal conditions.

ℹ️

Why these Fallacies matter

Ignoring these fallacies leads to systems that are fragile, slow, insecure, and difficult to manage. Acknowledging them from the outset influences architectural decisions, error handling strategies, and testing methodologies for distributed environments.

Key Fallacies and Their System Design Implications

  1. The network is reliable: Networks are inherently unreliable. Connections drop, packets are lost, and services become unavailable. Implication: Implement retries with exponential backoff, circuit breakers, and idempotency.
  2. Latency is zero: Data transfer across a network always takes time, even within a data center. Implication: Minimize network round trips, use asynchronous communication, and implement caching strategies.
  3. Bandwidth is infinite: Network capacity is finite and can be saturated. Implication: Optimize data serialization, compress data, and employ rate limiting.
  4. The network is secure: Networks are vulnerable to various attacks. Implication: Encrypt all communications (TLS), implement robust authentication and authorization, and secure endpoints.
  5. Topology doesn't change: Network configurations and component locations are dynamic. Implication: Use service discovery, load balancing, and idempotent deployments.
  6. There is one administrator: Distributed systems often involve multiple teams and administrators. Implication: Design for clear ownership, observability, and robust APIs.
  7. Transport cost is zero: Sending data over a network incurs CPU, memory, and bandwidth costs. Implication: Be mindful of data volume and frequency, optimize data structures.
  8. The network is homogeneous: Different parts of a distributed system might run on diverse hardware, software, and network conditions. Implication: Design for abstraction, use open standards, and avoid tight coupling to specific technologies.

These fallacies serve as a foundational checklist for any system designer. By building systems with these realities in mind, engineers can create more resilient, performant, and maintainable distributed applications.

distributed computingfallaciesnetwork reliabilitylatencybandwidthsystem architecturesoftware designresilience

Comments

Loading comments...