ELB & ASG Flashcards
Scalability
Means that an application / system can handle greater loads by adapting.
Vertical Scalability (= scale up / down)
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.
-Very common for non distributed systems, such as a database.
-There’s usually a limit to how much you can
vertically scale (hardware limit)
Horizontal Scalability (= scale out / in)
Means increasing the number of instances /
systems for your application.
-Implies distributed systems
-Very common for web applications / modern applications
High Availability
Means running your application / system in at
least 2 Availability Zones.
-The goal of high availability is to survive a data center loss (disaster)
-Auto Scaling Group multi AZ
-Load Balancer multi AZ
Elasticity
Once a system is scalable, elasticity means that there will be some “auto-scaling” so that the system can scale based on the load. This is “cloud-friendly”: pay-per-use, match demand, optimize costs
Agility
New IT resources are only a click away, which means that you reduce the time to make those resources available to your developers from weeks to just minutes.
What is load balancing?
Are servers that forward internet traffic to multiple servers (EC2 Instances) downstream.
Why use a load balancer?
• Spread load across multiple downstream instances
• Expose a single point of access (DNS) to your application
• Seamlessly handle failures of downstream instances
• Do regular health checks to your instances
• Provide SSL termination (HTTPS) for your websites
• High availability across zones
Why use an Elastic Load Balancer?
• An ELB (Elastic Load Balancer) is a managed load balancer
• It costs less to setup your own load balancer but it will be a lot more effort on your end.
• 3 kinds of load balancers offered by AWS:
• Application Load Balancer (HTTP / HTTPS
only) – Layer 7
• Network Load Balancer (ultra-high
performance, allows for TCP) – Layer 4
What’s an Auto Scaling Group?
Lets you build scaling plans that automate how groups of different resources respond to changes in demand.
• Cost Savings: only run at an optimal capacity
The goal of an Auto Scaling Group (ASG) is to:
• Scale out (add EC2 instances) to match an increased load
• Scale in (remove EC2 instances) to match a decreased load
• Ensure we have a minimum and a maximum number of machines running
• Automatically register new instances to a load balancer
• Replace unhealthy instances
Auto Scaling Groups – Scaling Strategies
• Manual Scaling: Update the size of an ASG manually
• Dynamic Scaling: Respond to changing demand
• Predictive Scaling: Uses Machine Learning
to predict future traffic ahead of time.
Dynamic Scaling
• Simple / Step Scaling
• When a CloudWatch alarm is triggered
(example CPU > 70%), then add 2 units
• Target Tracking Scaling
• Example: I want the average ASG CPU to stay
at around 40%
• Scheduled Scaling
• Anticipate a scaling based on known usage
patterns, Example: increase the min. capacity to
10 at 5 pm on Fridays
Predictive Scaling
• Uses Machine Learning to predict future traffic ahead of time
• Automatically provisions the right number of EC2 instances in advance
• Useful when your load has predictable time- based patterns