Availability
The availability of an application or system can be viewed as the total amount of time that it provides its services against the total time it is expected to do so. System availability is affected by multiple factors ranging from failure of the system due to hardware/software failures and the known downtime for maintenance and upgrades.
High availability is achieved in applications by having failover mechanisms using which the system can get back to its service provisioning state after a failure. A more optimized system would consider backup mechanisms, which it can immediately switch on to in a failure scenario, thus improving the availability. Scheduled maintenance can be done using a rolling upgrade to ensure high availability. The solutions are usually depicted in the form of deployment architecture, vary according to the software solution, and consider the trade-offs in non-functional requirements.
The following figure depicts the sample deployment architecture that can be...