High Availability Architecture is to be considered for serious critical system as it means that the system can tolerate a certain amount of failure and errors, before it is no longer working properly. The design of architecture comes from a key criterion for the capability of your service to meet your expected service level agreement (SLA).

Main key to design High Availability Architecture are as follows.

  1. Avoid single points of failure - To avoid single points of failure and to maximize system availability, it needs to have some degree of redundancy. The solution typically involves horizontal scaling across multiple machines.
    • Hardware redundancy - Eliminate single points of failure in the system by including hardware redundancy. There are many techniques to design hardware redundancy.
      • Use horizontal scaling to distribute application servers across multiple physical machines (Active-Active)
      • User backup server (Active-Standby)
    • Process redundancy - Provide process redundancy and isolation so that a failing server does not impact the remaining healthy servers.
  1. Load balancing (Active-Active) - Use Load balancing techniques to make sure that the individual servers are not overwhelmed with client requests while other servers are idle.
  2. Fail-over support (Active-Standby) - The environment must be able to continue processing client requests, even if one or more components are offline.