When you build a distributed system, these are certain considerations that you should not forget to take into account. These points were brought into attention by experts working on distributed computing worldwide.
- The network is unreliable: For example there can be a physical breaking of a cable that carries the network traffic.
- Latency is not zero:When you pass a reference to a large object to a method on a dll on the same machine, they are both share the same memory and hence there are no problems. But if you need to pass this to a web service, you need to serialize it and account for the time delay in sending a huge piece of data across.
- Bandwidth is finite: If you send very large data across network, it will lead to more lost TCP/IP packets. Hence more wasted bandwidth. In other words you would be paying for bandwidth that you didn't use.
- The network is insecure
- Topology changes with time: As an example the connections between machines can change over time, which is change to the topology.
- There is more than one administrator: There are many networks and machines involved. Hence there will also be many administrators.
- Transport cost is not zero: There could be a bandwidth cost for the amount of data being sent across
- The network is hetrogeneous: For example different machines on the system might have different operating systems.