<aside> <img src="/icons/exclamation-mark_red.svg" alt="/icons/exclamation-mark_red.svg" width="40px" /> A distributed system is a collection of autonomous computing elements
that appears to its users as a single coherent system.
</aside>
In other words, distributed system is a collection of computing elements (nodes) each being able to behave independently of each other and appears as a single service for the end user.
Distributed systems are often organized with overlay networks. Overlay networks can be divided into two categories.
To assist the development of application for distributed systems, a concept of middleware was introduced. A middleware is a software layer that provides the same interface for each node despite an operating system running at it.
Middleware offers following services for applications running on the top of it:
The examples of middleware services are:
The major goal of any distributed system today is transparency. Transparency might be achieved in different fields: