Scalability & HA Overview
Scalability means that an application / system can handle greater loads by adapting.
There are two kinds of scalability:
Vertical Scalability
Horizontal Scalability (= elasticity)
Scalability is linked but different to High Availability
Let’s deep dive into the distinction, using a call center as an example.
Vertical Scalability
Vertically scalability means increasing the size of the instance
For example, your application runs on a t2.micro
Scaling that application vertically means running it on a t2.large
Vertical scalability is very common for non-distributed systems, such as a database.
RDS, ElastiCache are services that can scale vertically.
There’s usually a limit to how much you can vertically scale (hardware limit)
Horizontal Scalability
Horizontal Scalability means increasing the number of instances / systems for your application.
Horizontal scaling implies distributed systems.
This is very common for web applications / modern applications.
It’s easy to horizontally scale thanks the cloud offerings such as Amazon EC2
High Availability
High Availability usually goes hand in hand with horizontal scaling.
High availability means running your application / system in at least 2 data centers (== Availability Zones)
The goal of high availability is to survive a data center loss
The high availability can be passive (for RDS Multi AZ for example)
The high availability can be active (for horizontal scaling)
High Availability & Scalability for EC2
Vertical Scaling: Increase instance size (= scale up / down)
From: t2.nano - 0.5G of RAM, 1 vCPU
To: u-12tb1.metal – 12.3 TB of RAM, 448 vCPUs
Horizontal Scaling: Increase number of instances (= scale out / in)
Auto Scaling Group
Load Balancer
High Availability: Run instances for the same application across multi AZ
Auto Scaling Group multi-AZ.
Load Balancer multi-AZ.
Last updated