High Availability (HA)
High availability (HA) involves designing an AWS solution in a way that keeps systems and services operational and accessible for long, extended periods of time. High availability is commonly presented as a percentage of uptime. Most companies today are looking for 99.9% to 99.999% uptime. Incredibly, various services of AWS offer well beyond 99.999% uptime.
Like many other advantages of AWS, superior HA is not automatic. AWS recommends several guidelines to help ensure high availability:
Design systems to have no single point of failure.
Correctly deploy and then test system availability.
Prepare procedures to respond to, mitigate, and recover from failures.
Elasticity
Thanks to features in public cloud vendors like AWS, you can quickly scale the cloud-based infrastructure up and down as well as out and in, as needed. This advantage is often termed elasticity. AWS Auto Scaling allows for the dynamic creation and destruction of resources based on actual client demand. Such scaling can occur with little or no administrator interaction. When discussing scaling the resources of a service, we are talking about scaling those resources horizontally (out and in, with elasticity); the service made up of those resources is being scaled up and down (vertically, with the single service getting bigger or smaller). A single service scales up and down as well as out and in, depending on the context.
AWS provides easy-to-use tools that foster overall cloud benefits such as elasticity. There are two tools in particular you should be aware of:
Auto Scaling: Auto Scaling monitors your applications and automatically adjusts capacity to maintain steady, predictable performance at the lowest possible cost. Thanks to this powerful tool, you can enable application scaling for multiple resources across multiple services in minutes. The service provides a simple, powerful user interface that lets you build scaling plans for resources like AWS EC2 instances.
Elastic Load Balancing (ELB): ELB automatically distributes incoming application traffic across multiple targets, such as EC2 instances, containers, and IP addresses. It can handle the varying load of your application traffic in a single Availability Zone or across multiple Availability Zones. Elastic Load Balancing offers four types of load balancers that all feature the high availability, automatic scaling, and robust security necessary to make your solutions fault tolerant: Application Load Balancer, Network Load Balancer, Gateway Load Balancer, and Classic Load Balancer. Figure 2-4 shows the ELB options in AWS.
Figure 2-4 Elastic Load Balancing in AWS