written by Hitesh Kumar
High Availability (HA) refers to systems that are durable and serve users continuously without downtime/failure within its service span. HA could be applied both on application & infrastructure layers. HA and redundancy on the application layer could be implemented using best practices, standard procedures, and testing policies at all levels. The full HA environment is accomplished when we address all the gaps at both application and infrastructure levels.
A common misconception about applications deployed on the cloud be it AWS, Azure, or GCP is that cloud makes all applications and infrastructures highly available and redundant by default. The cloud is not a remedy for best practices deployment of infrastructure and applications. When implemented appropriately, cloud technologies can enable applications to run in a highly available, fully redundant environment at a much lower cost than dedicated infrastructure.
The Cost of Unavailability:
When any application is disrupted, the effects can be enormous in terms of business impact, application usages, cost, reputation, user satisfaction, brand value, and reliability, etc.
Let us take an example of an e-commerce website that successfully serves its valuable customers and is a business that operates well. The website generates gross revenue of $500,000 per day. A very small downtime of 15 minutes for any reason, could cost this company around $5,208.33. This is a very simple calculation however, the losses are bigger in terms of reputation, user satisfaction, brand value, and reliability, etc.
In this section, we are going to see how we can plan for HA on infrastructure deployed on AWS Cloud.
figure 1
The Basic Strategy for HA:
In an enterprise, computing and network infrastructures depend on redundancy and availability. It is especially critical to plan high availability and redundancy at all single points of failure. An appropriately planned cloud infrastructure designed for HA can function almost uninterrupted and recover from malfunctions in just minutes, with costs of redundancy being significantly less than the same solution in a dedicated on-premises infrastructure. The main cause of this lower cost is shared resources and strategies to use the resources available in the cloud.
Purpose of Highly Available Architecture:
- Availability across multiple instances/multiple availability zones
- Auto scaling of instances (scale up and scale down) based on the metrics
- Security compliant
- No impact to end-users during any component failure
- No impact during patching the instances
Major Components of a web application for HA:
Web Servers and Load Balancers:
Multiple web servers should be deployed in the application infrastructures to provide high availability and redundancy in a production environment. This improves performance because servers will service user requests concurrently. We can use AWS ALB (Application Load Balancer) which is a fully managed, multi-AZ (Availability Zone) load balancer service that distributes incoming application traffic across multiple targets. This increases the availability of the application.
Multi–AZ deployment is an AWS managed offering where you get a hot-standby replica of your remote desktop server in a different Availability Zone which will automatically substitute your master/primary database in case of its maintenance, failure, or AZ failure.
figure 2
Application Servers:
Applying an event-based auto-scaling strategy can improve application availability and redundancy. The web server launch configuration should be standard and needs to be used while deploying web servers. We can also use AWS Beanstalk to automate the deployment process while focusing only on the application code. We need to plan for the multi availability zones (AZs) deployment so that entire data center outages can be managed.
figure 3
Database Servers:
Highly available database server deployment can be implemented in many ways and totally depends upon the requirements. Here are a few database server deployment patterns.
AWS RDS Read-Replica: Amazon RDS Read Replicas provide enhanced performance and durability for RDS database (DB) instances. Databases in read-replica arrangement make it easy to elastically scale out beyond the capacity constraints of a single DB instance for read-heavy database workloads.
Figure 4
AWS RDS Multi-AZs: Amazon RDS Multi-AZ deployments provide enhanced availability and durability for RDS database (DB) instances, making them a natural fit for production database workloads. When you provision a Multi-AZ DB instance, Amazon RDS automatically creates a primary DB instance and synchronously replicates the data to a standby instance in a different Availability Zone (AZ).
figure 5a
figure 5b
Static Content:
Static content should be stored on AWS Simple Storage Service (S3). S3 Standard Class provides 99.999999999% (11 9’s) of data durability because it automatically creates and stores copies of all S3 objects across multiple systems this means the data is available when needed and protected against failures, errors, and threats.
Designing a high available multi-AZs application architecture:
One of the core architectural principles of building highly available applications on Amazon Web Services (AWS) is to work with a multi-Availability Zone (AZ) architecture. In the unlikely event an AZ fails, this architecture allows applications to continue running using resources in the other AZs. We can utilize services like CloudFormation to automate the deployment, and services like CloudWatch and CloudWatch Events to detect any discrepancies.
figure 6
Advantages of using High Availability for Web Applications on AWS:
- Highly available and redundant architecture
- No single point of failure thus, protection from downtime
- Continuous monitoring and event-based actions
- Mutable application servers
- Minimizing lost revenue as a result of failure
- Improve resilience and agility
How can we help you?
Sterling offers comprehensive services to help the business users get the true value of Amazon Cloud, Migration, Deployment, and Management. Being an AWS Cloud partner, we can help you build and deploy cloud-based applications for your business. With the core proficiency of years in Cloud Consulting, we understand what your business needs, we identify solutions to fulfill your custom requirements, and more significantly we reduce areas of risk and the mitigating processes necessary to avoid them. We can help you with sharing our extensive experience in deploying the mission-critical applications on AWS cloud in an efficient and secure manner.
Reach out to us on connect@sterling.com for more information, product assistance, and demos.