Usually distributed systems consists of 3 main components namely Server, Network and Software. Server contains operating systems for providing network services or middleware on which distributed systems software relies. Network is the connectivity among those servers serving as the super high way for information sharing. Software refers anything soft platform that makes distributed system works and serves for clients as a coherent system. Software involves from ground up to user interface that users normally interact.
At each component, there is a generally common false assumption made by several system designers. These assumptions cannot be negligible; otherwise distributed systems cannot run smoothly.
The false assumptions in distributed systems are:
- Reliable network
- In practice, network is not 100% reliable. There is possibility of switch or router failure.
- Secure network
- Everything must be compromised sooner or later.
- Everything is homogeneous
- It is hard to have homogeneous for everything. We can deploy the same operating systems on the same hardware platform. But how about programming language to develop distributed systems. Each programming language has its pros and cons. Take advantage of combination from those languages is essential. Moreover, clients may use computer, mobile phone, tablet with different operating system to interact with our distributed systems. So it is diversity or heterogeneous.
- Topology does not change
- Network topology may be changed from time to time. Or at least changing as the number of nodes increase.
- Zero latency
- It takes time to transfer a packet from source to destination especially at distant geographical area.
- Infinite bandwidth
- Network bandwidth is limited by network card, cable, capacity of switch or router.
- Zero transport cost
- Consider data sending from Cambodia to US. It is transfered to many Internet hub either local or regional before it reaches the destination. Data may flow through submarine fiber optic cable which requires us to pay for that service. So transport data cost us some sort of amount of money.
- One administration
- Managing distributed systems is never done in one administration. Just imagine, hardware management, dead/alive node management, software update component management, network management, security monitoring etc.