CLOUD CONCEPT

High availability

High availability is the design and operation of a system to remain accessible and usable despite component failures or maintenance.

Cloud Concepts Hub →

What is High availability

High availability reduces service interruptions by combining redundant components, isolated failure domains, health monitoring, and recovery mechanisms. In the cloud, it commonly involves distributing workloads across multiple Availability Zones so that a failure in one location does not stop the entire application.

High availability means keeping a service usable for the required proportion of time, including when infrastructure fails or maintenance occurs. Availability should be measured from the user's perspective: a running server does not make an application available if users cannot log in or complete transactions. An availability target of 99.9% allows approximately 43 minutes of unavailability in a 30-day month. Higher targets generally require additional redundancy, automation, testing, and operational effort.

The central design principle is to avoid single points of failure. Two application servers provide limited protection if both depend on one database, one network appliance, or one power source. Engineers must examine the entire request path, including traffic routing, compute, storage, authentication, and external dependencies. Redundant capacity must also be sufficient to serve the required workload after a component or location fails.

Cloud infrastructure provides failure domains that help separate redundant components. In AWS, a Region is a geographic area containing multiple Availability Zones. Each Availability Zone consists of one or more discrete data centers with redundant power, networking, and connectivity. Deploying application instances across at least two Availability Zones in one Region is a common approach to surviving an instance failure or an Availability Zone disruption. Several instances in one Availability Zone do not provide the same protection.

A load balancer distributes incoming traffic across registered application targets and uses health checks to identify targets that should receive requests. For example, an online store can run application instances in two Availability Zones behind a load balancer. When one instance fails, the load balancer can direct requests to other healthy instances while an automated scaling group replaces the failed instance. This behavior depends on correct health checks, routing configuration, and sufficient healthy capacity; a load balancer alone does not make the entire application highly available.

Application state needs equal attention. Storing shopping carts only in an instance's memory can cause users to lose their carts when traffic moves elsewhere. Externalizing session state to an appropriately resilient data store makes application instances easier to replace. A database deployment with synchronous replication and automated failover can protect against certain infrastructure failures, although failover can still briefly interrupt connections. Clients need suitable timeouts, retries, and connection recovery.

Multiple Regions provide protection against a broader class of disruptions, including loss of an entire Region. An application might actively serve traffic in two Regions or maintain a standby environment in another Region. However, multi-Region operation introduces additional cost, replication delay, data consistency decisions, routing complexity, and failover procedures. It is not necessary for every highly available workload. Choose it when business requirements justify regional failure protection, and define recovery time and acceptable data loss explicitly.

High availability is related to, but different from, elasticity and agility. Elasticity adjusts capacity as demand changes, while agility enables teams to provision resources and deliver changes quickly. Elastic scaling can support availability during demand spikes, but it does not replace redundancy. Backups support recovery but do not keep a failed service immediately accessible. Fault tolerance generally aims to continue operating without interruption through specified failures, whereas high availability can allow brief recovery periods.

Practical operation includes monitoring successful user transactions, testing failover, deploying changes gradually, and checking that surviving resources can handle peak demand. Redundancy increases cost and complexity, and shared configuration errors can affect every replica at once. High availability is therefore an end-to-end engineering outcome, not a guarantee obtained simply by selecting multiple locations or buying a service with an availability commitment.

Key aspects of High availability

High availability combines isolated redundancy, health-aware routing, resilient state, automated recovery, and tested capacity to minimize service interruptions.

Redundancy without single points of failure

Provide alternative components for critical parts of the request path, including application instances, databases, and network dependencies. Verify that replicas do not all depend on the same unprotected component.

Failure-domain isolation

Distribute resources across multiple Availability Zones to reduce exposure to a single-zone disruption. Use multiple Regions when the workload must also withstand a regional disruption and the added complexity is justified.

Health-aware traffic distribution

Use load balancing and meaningful health checks to direct requests toward functioning application targets. Health checks should indicate readiness to serve requests without causing unnecessary removal of otherwise usable capacity.

Automated recovery and resilient clients

Automate replacement of failed compute resources and failover of supported stateful components. Configure clients to recover connections and retry transient failures safely, using bounded retries and backoff.

Resilient state and sufficient capacity

Keep important state in data stores designed for the required failure scenarios rather than only on individual application instances. Ensure surviving resources have enough capacity to maintain acceptable service after a failure.

Measured and tested availability

Define availability objectives using successful user operations, not just infrastructure uptime. Test failure scenarios and maintenance procedures to confirm that routing, recovery, and capacity behave as intended.

Cloud services for High availability

Elastic Load Balancing provides the application entry point and distributes requests across instances in multiple Availability Zones. Amazon EC2 Auto Scaling maintains compute capacity and replaces unhealthy instances, while an Amazon RDS Multi-AZ deployment protects the database tier through replication and automated failover. Amazon CloudWatch helps operators detect errors, capacity shortages, and recovery failures. For workloads deployed in multiple Regions, Amazon Route 53 can steer clients toward healthy regional endpoints. These services must be configured together with resilient session storage, appropriate client retries, and enough surviving capacity; no individual service makes the complete application highly available.

Amazon EC2 Auto Scaling image Amazon EC2 Auto Scaling

Amazon EC2 Auto Scaling maintains desired instance capacity and replaces instances identified as unhealthy. An Auto Scaling group spanning multiple Availability Zones distributes compute capacity across failure domains; Elastic Load Balancing health checks can also be enabled for replacement decisions.

Open Amazon EC2 Auto Scaling →
Amazon RDS image Amazon RDS

Amazon RDS offers Multi-AZ deployment options that replicate database data across Availability Zones and provide automated failover. A traditional Multi-AZ DB instance deployment uses a standby for availability rather than read scaling; application connections can still experience a brief interruption during failover.

Open Amazon RDS →
Amazon Route 53 image Amazon Route 53

Amazon Route 53 supports DNS routing policies and health evaluation that can direct clients toward healthy application endpoints, including endpoints in different Regions. DNS-based failover is not instantaneous because detection time, DNS caching, and client behavior affect recovery.

Open Amazon Route 53 →
Amazon CloudWatch image Amazon CloudWatch

Amazon CloudWatch provides metrics, alarms, logs, and application monitoring capabilities that help detect availability problems. Monitoring can support automated responses, but it does not itself supply redundant application capacity.

Open Amazon CloudWatch →