Fallacies of Distributed Computing: 7. Transport cost is zero
Fallacies of Distributed Computing
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:
- 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
7. Transport cost is zero
Whereas the second fallacy relates to the time taken to transport data over a network, the seventh fallacy relates to the resources required to do so.
There is a resource (and resultant latency) cost in marshalling data between the application layer (Layer 7 on the OSI Reference Model) and transport layer (Layer 4) in order to send it over the network. While this may be an abstract concern where a system is deployed on own hardware, in a cloud computing context where resource utilisation equals money, it can be a more concrete concern.
Computing time costs money.
The infrastructure used to set up and run the system will incur initial and ongoing costs — for on-premises systems these may include the cost of physical hardware such as servers, switches, and routers to the salaries of the network operators who will hopefully manage everything.
For cloud computing, while physical hardware costs will of course not be a factor of concern, you will pay a premium for the resources you utilise.
While the cost of infrastructure is mostly outside your control, optimising its use is within your domain. Reducing the time spent marshalling data between Layers 7 and 4 may be significant, depending on the functionality provided by the system. For example, the cost of transport for systems providing audio and video streaming, telephony, or realtime collaboration features can be brought closer to zero by leveraging an optimised data format e.g. protocol buffers vs. opting for JSON or XML.