- Azure for Architects
- Ritesh Modi
- 353字
- 2021-07-02 13:17:01
High availability
High availability is one of the major architectural concerns for any architect. It forms one of the core non-functional technical requirements for any serious service and its deployment. High availability refers to the feature of a service or application that keeps it operational on a continuous basis, meeting or surpassing its promised defined service level agreement (SLA). Users are promised a certain SLA based on service type. The service should be available for consumption based on its SLA. For example, an SLA can have 99% availability for an application for the entire year. This means it should be available for consumption by users for 361.35 days. If it becomes less than this, this constitutes a breach of the SLA. Most mission-critical applications define their high-availability SLA with five nines for a year. This means the application should be up, running, and available throughout the year, but it can only be down and unavailable for 5.2 hours.
It is important to note here that high availability is defined in terms of time—that is, yearly, monthly, weekly, and so on, and it could even be a combination of these.
A service or application is made up of multiple components and these components are deployed on separate tiers and layers. Moreover, it is deployed on an operating system and hosted on a physical machine or VM. It consumes network and storage services for various purposes. It might even be dependent on external systems. For these services or applications to be highly available, it is important that networks, storage, operating systems, VMs or physical machines, and each component of the application is designed with the SLA and high availability in mind. A definite application life cycle process used to ensure high availability should be baked from the start of application planning until its introduction to operations. This also involves introducing redundancy. Redundant resources should be included in the overall application and deployment architecture to ensure that if one goes down, the other takes over and serves the requests of the customer.