Derek Lawless

There is always sunshine / Far above the grey sky

The fallacies of distributed computing are a set of assertions describing false assumptions made about distributed systems.

L. Peter Deutsch drafted the first 7 fallacies in 1994, with the 8th added by James Gosling in 1997.

The 8 fallacies are:

  1. The network is reliable
  2. Latency is zero
  3. Bandwidth is infinite
  4. The network is secure
  5. Topology doesn’t change
  6. There is one administrator
  7. Transport cost is zero
  8. The network is homogeneous

5. Topology doesn’t change

The problem

Network topology is volatile:

  • Environments may have differing network requirements — from quickly spun up development environments through to production environments supporting high availability, resiliency, and redundancy
  • Firewall rules are likely to change in response to security concerns or application requirements
  • Services may be introduced (e.g. federated authentication) or deprecated, changing network topology

The topology of the network is typically outside your control. Servers may be added or retired, network services may be upgraded or deprecated, planned and unplanned outages may occur.

In cloud computing scenarios — where elasticity is typically a key motivation for adoption — network topology will mutate in response to load and utilisation.

Network topology changes constantly.

Solutions

Given that network toplogy is indeed volatile, there are two broad approaches that can be taken to buffer against topology changes.

Abstract network specifics

  • Avoid referencing IP addresses directly, instead using DNS hostnames to reference resources
  • Consider using a service discovery pattern for Microservice architectures

Design for failure

  • Design your architecture to avoid irreplaceability, assume any server may fail
  • Introduce chaos engineering and test for system behaviour under infrastructure, network, and application failures
© 2022 Derek Lawless. Built with Gatsby