Skip to content

Scalability & High Availability

  • Scalabiliy 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

Vertical Scalability

  • Vertical scalability means increasing the size of the instance.
  • For example, your application runs on t2.micro, scaling that application vertically means running it on t2.large.
  • Vertical scalability is very common for non distributed systems, such as database.
  • RDS, ElastiCache are services that can scale vertically.
  • There's usually a limit to gow 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 applicaitons.
  • It's easy to horizontally scale thanks to 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.namo - 0.5G RAM, 1 vCPU
    • To: u-l2tgb1.metal - 12.3TB RAM, 448 vCPUS
  • Horizontal Scaling: Increase number of instances (scale in/out)

    • 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