Elastic Load Balancing and Auto Scaling⚓︎
What demand?
-
How can we make sure that our applications have enough capacity and enough
EC2instances available? -
How can we distribute incoming connections to those
EC2instances?
How?
-
Auto Scalinghelps to make sure that you have the right number ofEC2instances to service the demand of your application. -
Then, put
Elastic Load Balancingin front of your application.ELBwill distribute incoming connections across the pool of instances that are managed by theAuto Scaling Group.
All in all, those two technologies above enable you to have elastic and fault-tolerant applications.
Elasticity: Scaling Up v.s. Out⚓︎
Assume that we have an EC2 instance for our application now:
Let's see what is Scaling Up (Vertical Scaling):

Let's see what is Scaling Out (Horizontal Scaling):
Amazon EC2 Auto Scaling⚓︎
Amazon EC2 Auto Scaling is horizontal scaling (scales out), which dynamically launches and terminates instances. CloudWatch metrics and EC2 status checks will process the responsed information from EC2 Auto Scaling. The pipeline to realize the elasticity and scalability can be seen below:
Load Balancing and High Availability⚓︎
From EC2 Auto Scaling, we end up with lots of different instances of the same application.
Demand?
How do we direct traffic to those instances?
Load Balancer
As you can see in the pictures below,
Load Balancercan not only providehigh availability(availability zones) if some server is in the crash.
Load Balancercan also increasefault tolerancewhen the system has redundant components (more than one server or more than one hardware).
Let's see the case we combine EC2 Auto Scaling and Load Balancer together:

Types of Elastic Load Balancer⚓︎
There are four types of Elastic Load Balancer:
Here are some use cases for different types of ELB:
The details about ALB and NLB focus on the URL they use: