The fallacies of distributed computing are a set of assertions describing false assumptions made about distributed systems.
The 8 fallacies are:
- The network is reliable
- Latency is zero
- Bandwidth is infinite
- The network is secure
- Topology doesn’t change
- There is one administrator
- Transport cost is zero
- The network is homogeneous
5. Topology doesn’t change
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.
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