Fault tolerance is the property that enables a system to continue operating properly in the event of a failure of some of its components. A fault-tolerant design enables a system to continue its intended operation (possibly at a reduced level), rather than failing completely, when some part of the system fails. To learn more about fault tolerance, please visit https://en.wikipedia.org/wiki/Fault_tolerance.
In complex systems, which is nearly any software application nowadays, it is insufficient to ensure an uptime of each separate service within the application. Rather, we must ensure a fault-tolerant communication between these services as well.
Let's take another look at the full application architecture in the following ...