Information systems are not reliable by nature, since any component can fail; however, it is possible to improve a system's reliability and availability by distributing them among redundant components, and these components can represent individual service layers, each one with a higher level of cohesion.
Imagine the following scenario: I wish to deliver a letter and receive a confirmation when the letter has arrived. I only know the sender address and the post office that the letter must be picked up from:
![](https://static.packt-cdn.com/products/9781789130669/graphics/assets/5cc0bd9a-9e9c-4eb9-a34c-3a81a12a90bf.png)
This letter represents the content of the message I want to deliver, but in the process, some problems may arise. If I deliver the letter personally, I may run the risk of not finding the recipient in time, so I will need to return again, and if the delivery must be done across many areas of the world, additional considerations such as...