There are two main reasons for using distributed systems and distributed computing. First, the very nature of the application may
require the use of a communication network that connects several computers. For example, data is produced in one physical location and it is needed in another location. Second, there are many cases in which the use of a single computer would be possible in principle, but the use of a distributed system is
beneficial for practical reasons. For example, it may be more cost-efficient to obtain the desired level of performance by using a
cluster of several low-end computers, in comparison with a single high-end computer. A distributed system can be more reliable than a non-distributed system, as there is no
single point of failure. Moreover, a distributed system may be easier to expand and manage than a monolithic uniprocessor system.
[21]