When designing a software system, most of the work focuses on the functional areas of the product like the user interface, system storage, and processes running in the background. The possibility of long-term downtime—due to hardware, operating system, or software failure—often gets neglected.

High availability is a key way to prevent such downtime. The concept is a design and implementation approach that ensures a software system stays available to its users even when there are hardware or software problems.