Designing high availability systems in AWS cloud

kaustubh shukla
4 min readJul 7, 2020

Lets dive into the concepts of high availability and how to measure availability for modern cloud systems. We’ll understand that how AWS can help us achieve high availability for our system workloads, across different compute requirements, SQL databases and other storage services. Amazon’s built-in capabilities such as elastic load balancing, availability zones and auto-scaling can help us achieve high availability for enterprise workloads.

What Is High Availability?

Highly available(HA) systems are reliable in the way that they continue business operatins even when critical components fail. They are also resilient, which means that they are able to easily handle failure without services disruption or any type of data loss, and easily recover from such failure.

High availability is usually measured as a percentage of uptime. The number of “nines” is commonly used to indicate the degree of high availability. System that is up 99.99% of the time, means it is down for only 52.6 minutes during an entire year.

The following elements help you implement highly available systems:

Redundancy — Ensures that critical system components have another identical components with the same data, that can take over in case of failure.

Monitoring — Identify problems in production systems that may disrupt or degrade service.

Failover — Switch from an active system component to a redundant component in case of failure with degraded performance or functionality.

Failback — Switch back from a redundant component to the primary active component, when it has recovered from failure.

AWS High Availability: Compute, Databases and Storage

AWS helps you achieve high availability for cloud workloads, across three different dimensions:

Compute — Amazon EC2 and other services that let you provision computing resources, provide high availability features such as load balancing, auto-scaling and provisioning across Amazon Availability Zones (AZ), representing isolated parts of an Amazon data center.

Storage services — Amazon storage services, such as S3, EFS and EBS, provide built-in high availability options. S3 and EFS automatically store data across different AZs, while EBS enables deployment of snapshots to different AZs.

SQL databases — Amazon RDS and other managed SQL databases provide options for automatically deploying databases with a standby replica in Multi AZ.

NoSQL database — Amazon DynamoDB is a managed database service which provides an options for Multi AZ support.

AWS High Availability for EC2 Instances

If we are running instances on Amazon EC2, Amazon provides several built-in features to achieve high availability:

In addition to this, Amazon Route 53 provides highly available DNS services that can perform health checks on its targets and perform automatic failover for both active-active or active-passive configurations.

AWS High Availability for Storage Services

Below is the brief summary of the high availability capabilities Amazon offers for other popular storage services:

S3 guarantees 99.999999999% (twelve 9’s) durability, by redundantly storing objects on multiple devices across a minimum of three AZs in an Amazon S3 Region.

EFS guarantees 99.9% availability, otherwise between 10–100% of the service fee is discounted. Every file system object is redundantly stored across multiple AZs.

EBS volumes are created in a specific AZ. You can make a volume available in another AZ and it can then be attached to other instances in that same Availability Zone. To make a volume available outside the AZ, or to create redundancy, you can create a snapshot and restore it in another AZ within the same region. You can also copy snapshots to other AWS regions, to create redundancy across Amazon data centers.

AWS High Availability for SQL Databases on Amazon RDS

If we are running an SQL database as part of your AWS application, you are probably running it using Amazon RDS.

RDS provides high availability using Multi-Availability Zone (Multi-AZ) deployments. This means RDS automatically provisions a synchronous replica of the database in a different availability zone. When the main database instance goes down, users are redirected transparently to the other availability zone.

This provides two levels of redundancy:

In case the active database fails, there is a standby replica ready to receive requests

In case of a disruption in the AZ your main database instance is running in, there is failover to another AZ.

The following diagram illustrates Multi-AZ database deployment.

AWS Availability for NoSql Database using DynamoDB

Amazon DynamoDB is a NoSQL database that supports key-value and document data models, and enables developers to build modern, serverless applications that can start small and scale globally to support petabytes of data and tens of millions of read and write requests per second. DynamoDB is designed to run high-performance, internet-scale applications that would overburden traditional relational databases.

Originally published at http://www.kaustubh.website on July 7, 2020.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

No responses yet

Write a response