We understand that a system's ability to deal with failure and recover from failure is not the same as that offered by scalability. However, we cannot deny that they are closely related abilities in terms of the system. Unless we address the concerns of availability and fault tolerance, it will be challenging to build highly scalable systems. In a general sense, we achieve availability by making redundant copies available to different parts/components of the system. So, in the upcoming section, we will touch upon two such concepts.