‫So now let's talk about
‫what is an auto scaling group.
‫So when we deploy a website or an application,
‫the load can change over time because we may have
‫more users visiting our websites over time.
‫And we've seen that in the cloud, in AWS,
‫it's possible for us to create
‫and also get rid of servers very quickly
‫with the EC2 instance creation API call.
‫So, if you wanna automate this,
‫we can create an auto-scaling group.
‫So the goal of the ASG is to scale out,
‫that means add EC2 instances and you need to remember this,
‫scale out to match an increased load
‫or to scale in that means removing EC2 instances
‫to match a decreased load.
‫And so therefore the size of our ASG
‫is going to vary over time.
‫Overall, we can also define parameters
‫to ensure we'll have a minimum
‫and a maximum number of EC2 instances running at any time
‫in our ASG.
‫ASG also have the superpower
‫that if you are pairing it with a load balancer,
‫then any EC2 instances as part of the ASG
‫will be linked to the load balancer.
‫Another superpower is that
‫if one instance is deemed unhealthy, it is terminated
‫and a new EC2 instance is created to replace it.
‫So, auto scaling groups are free
‫and you're only going to pay
‫for whatever resources are created underneath
‫such as your EC2 instances.
‫So let's see how an ESG works in AWS.
‫So we set a minimum capacity,
‫which is how many instances you want at minimum in your ASG.
‫For example, two.
‫Then you set a desired capacity,
‫which is how many instances you want in your ASG,
‫for example, four and then you set a maximum capacity
‫which is how many instances
‫at a maximum do I want in my ASG.
‫And then that means that if you move the desire capacity
‫to higher number,
‫but that's still less than a maximum capacity,
‫then you can scale out as needed.
‫That means scale out means adding EC2 instances
‫and so therefore your ASG can grow bigger
‫and bigger and bigger.
‫In this instance, the maximum capacity is seven.
‫As I said, the ASG also works with a load balancer.
‫So if we have four instances registered in our ASG,
‫then the ELB is going to distribute traffic
‫to all these instances right away
‫and so your users can access a load balanced website.
‫But the ELB also has the ability
‫to check for the health of your EC2 instances
‫using the health check
‫and that health check can be passed on to the ASG.
‫That means that the ASG can terminate EC2 instances
‫if they are deemed unhealthy by the load balancer,
‫which is very handy.
‫Also, if you scale out, that means if you add EC2 instances,
‫then of course the ELB is going to send traffic
‫to them as well and spread the load.
‫Therefore, it's a really great combination
‫to use a load balancer and an auto scaling group.
‫Now, in terms of attributes to create your ASG,
‫you need to create a launch template.
‫There used to be a thing called launch configurations
‫but it's deprecated, but the idea is the same.
‫A launch template contains information
‫on how to launch EC2 instances within your ASG.
‫So you have information about the AMI
‫and the instance type, the EC2 user data,
‫the EBS volumes, security groups, SSH key pair,
‫IAM roles for your EC2 instances,
‫network and subnet information
‫as well as load balancer information and more if you want.
‫And so all these parameters look a lot like
‫the ones we specified when we created an EC2 instance.
‫On top of it, your ASG has a min size,
‫a max size and an initial capacity we need to define
‫as well as scaling policies.
‫Talking about scaling policies,
‫let's see how CloudWatch alarm integrates with auto scaling.
‫So you don't know what CloudWatch is yet of course,
‫but let me just tell you a little bit about it right now.
‫So it's possible to scale in and out,
‫an ASG based on CloudWatch alarms.
‫So for example, we have an ASG right here
‫with three EC2 instances
‫and the alarm is going to be triggered
‫and therefore we're going to get a scale out activity.
‫So what would trigger an alarm?
‫Well, it's a metric you can return, for example,
‫for the average CPU or any custom metric you want.
‫So for example, if the average CPU
‫as a whole for your ASG is too high,
‫then you need to add EC2 instances
‫and therefore the alarm is going to be triggered
‫and is going to trigger a scaling activity
‫in your auto scaling group
‫and this is why it's called an auto scaling group
‫because paired with alarms,
‫there is an automatic aspect of scaling behind the scenes.
‫So based on the alarm, we can create scale out policies.
‫That means increasing the number of instances
‫or we can create scale in policies
‫to decrease the number of instances.
‫And all these things together are what composes ASG.
‫I hope you liked it and I will see you in the next lecture.