Scalability and High Availability in AWS
Scalability
Scalability refers to the ability of an application or system to handle a growing amount of work by adapting to the increased demand.
Types of Scalability
- Vertical Scalability (Scaling Up)
- Involves increasing the size of an instance.
- Example: Upgrading an EC2 instance from a t2.micro to a t2.large.
- Common for non-distributed systems, like databases (RDS, ElastiCache).
- Limited by hardware constraints.
- Horizontal Scalability (Scaling Out)
- Involves increasing the number of instances/systems for your application.
- Example: Adding more EC2 instances to handle load.
- Implies a distributed system architecture.
- Common for web applications and modern applications.
- Easily achieved in the cloud (e.g., Amazon EC2).
High Availability
High availability ensures that an application or system is operational and accessible without significant downtime.
Characteristics of High Availability
- Running your application across at least two data centers or AWS Availability Zones.
- The goal is to survive data center failures and maintain operations.
- Can be passive (e.g., RDS Multi AZ) or active (e.g., multiple EC2 instances across AZs).
AWS Specifics
- Vertical Scaling (EC2 Examples)
- Smallest instance: t2.nano (0.5 GB RAM, 1 vCPU)
- Largest instance: u-12tb1.metal (12.3 TB RAM, 450 vCPUs)
- Horizontal Scaling (AWS Services)
- Scale Out: Increase the number of instances.
- Scale In: Decrease the number of instances.
- Managed by services like Auto Scaling Groups or Load Balancers.
- High Availability (AWS Services)
- Auto Scaling Groups with Multi AZ enabled.
- Load Balancers with Multi AZ enabled.
Conclusion
Understanding scalability and high availability is crucial for AWS exam preparation. Remember the call center analogy when approaching exam questions related to these topics.