EC2 인스턴스 생성 및 종료를 자동으로 해주는 것
ASG의 목표 : Scale out, Scale in
즉, 증가한 로드에 맞춰 EC2 인스턴스를 추가하거나,
감소한 로드에 맞춰 EC2 인스턴스를 제거하는 것
놀랍게도 무료다...!!!

AWS에서의 ASG 작동에 대해 알아보자
1. 최소 용량 (Minimum Capacity), ASG 내 인스턴스의 최소 개수를 설정한다.
2. 희망 용량(Desired Capacity), ASG 내 인스턴스의 희망 개수를 설정한다.
3. 최대 용량(Maximum Capacity), ASG 내 인스턴스의 최대 개수를 설정한다.
최대 용량 내에서 희망 용량을 더 높은 숫자로 설정 -> Scale out ( EC2 인스턴스 추가)
핵심인 ELB에서의 ASG에 대해 살펴보자.

ASG에 4개의 인스턴스가 등록되어 있으면 , ELB로 분산시킬 수 있다.
즉, ASG안에 있는 EC2들은 ELB와 연결이 되어있다는 것.
ELB는 헬스체크를 하고, 비정상인 EC2를 알려줄 수 있다.
이 때, 비정상이라 판단하는 EC2 인스턴스를 ASG가 종료할 수 있다!
또한, Scale out이 되어 EC2 인스턴스가 생성되었다면, ELB가 트래픽을 보내고 로드를 분산시킬 것이다!
CloudWatch 경보를 기반으로 ASG를 Scale in, Scale out 할 수 있다.
CloudWatch: AWS에서 제공해주는 모니터링 툴

그림을 보면서 이해해보자.
CloutWatch에서 EC2 인스턴스의 CPU 사용량을 체킹하고 있고,
CPU 사용량이 60% 이상이 될 시 CloudWatch 알람을 통해 자동으로 Scale out을 하도록 설정한 것.
반대로 CPU 사용량이 20% 이하일 경우, CloudWatch 알람을 보내고 자동으로 Scale in을 해 비용을 절감할 수도 있다.
기가막히다 진짜,,, AWS 참 대단한 거 같아요
어떤 기준으로 오토 스케일링을 하면 될까?
1. 동적 스케일링 정책 (Dynamic Scaling Policies)
어플리케이션에 따라 다르겠지만 보통 어떤걸 기반으로 할까?
1. CPUUtilization(평균 CPU 사용률)
2. RequestCountPerTarget (대상별 요청 수 지표)

이 경우에, Target Value가 3이니 이 지표를 가지고 ASG 설정
3. Average Network In/Out
따라서 스케일링 작업이 필요할 때 기본적으로 설정된 Cooldown이 있는지 확인해야 함

Load Balancer와 Auto Scaling이 합쳐지니까 어마무시한거같다
끝!