> For the complete documentation index, see [llms.txt](https://ret2basic.gitbook.io/ctfnote/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ret2basic.gitbook.io/ctfnote/computer-science/distributed-systems/introduction/what-is-a-distributed-system.md).

# What is a Distributed System?

## Definition

{% hint style="info" %}
A **distributed system** is a collection of autonomous computing elements that appears to its users as a single coherent system.
{% endhint %}

## Characteristics

1. **Collection of autonomous computing elements**
   * Nodes behave independently of each other.
   * Nodes are programmed to achieve common goals, which are realized by exchanging messages with each other.
2. **Single coherent system**
   * Users believe they are dealing with a single system
   * Distribution transparency

## Middleware

* **Middleware** is a layer that is logically placed **between OS and applications**.
* Middleware offers services that can also be found in most operating systems, including:
  * Facilities for **interapplication communication**
  * **Security** services
  * **Accounting** services
  * Masking of and recovery from **failures**
