In the previous section, you learned that fault tolerance and high availability have a close relationship with each other. High availability means your application is available for the user, but maybe with degraded performance. Suppose you need four servers to handle a user's traffic. For this, you put two servers in two different physically isolated data centers. If there is an outage in one data center, then user traffic can be served from another data center. But now, you have only two servers, which means you're left with 50% of the original capacity, and users may experience performance issue. In this scenario, your application has 100% high availability but is only 50% fault tolerant.
Fault tolerance is about handling workload capacity if an outage occurs without compromising system performance. A full fault-tolerant architecture involves high costs due to increased redundancy. Whether your user base can live with degraded performance for...