Scalability & High Availability
- Scalability means that an application / system can handle greater loads by adapting.
- There are two kinds of scalability:
- Vertical Scalability
- Horizontal Scalability (= elasticity)
Vertical Scalability
- Vertical Scalability means increasing the size of the instance. (scale up / down)
- 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, ElasticCache 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. (scale out / in)
- Horizontal scaling implies distributed systems.
- This is very common for web applications / modern applications.
- Auto Scaling Group (ASG) & Elastic Load Balancer (ELB).
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(AZ))