ASG
우리가 웹사이트나 어플리케이션을 배포할 때 이용자 수가 갈수록 많아지면서 로드가 바뀔 수 있다. AWS는 EC2 인스턴스 생성 API 호출을 통해 서버를 빠르게 생성하고 종료할 수 있다. 이러한 과정을 자동화하고 싶다면 ASG를 생성할 수 있다.
- ASG, Auto Scaling Group은 증가한 로드에 맞춰 EC2 인스턴스를 추가하거나, 감소한 로드에 맞춰 EC2 인스턴스를 제거하는 기능을 한다.
- 따라서 ASG의 크기는 지나면서 변할 것이고 ASG에서 실행되는 EC2 인스턴스의 최대 및 최소 개수를 보장하기 위해 매개변수를 전반적으로 정의할 수 있다.
- 로드 밸런서와 페어링하는 경우, ASG에 속한 모든 EC2 인스턴스는 자동으로 로드 밸런서에 등록된다.
- 한 인스턴스가 비정상이면 종료하고 이를 대체할 새 EC2 인스턴스를 생성한다.
- ASG는 무료이며 EC2 인스턴스와 같은 생성된 하위 리소스에 대한 비용만 내면 된다.
Attribute-Based Instance Type Selection
인스턴스 속성을 기반으로 ASG를 생성하려면 Attribute-Based Instance Type Selection(속성 기반 인스턴스 유형 선택) 기능을 사용하면 된다.
이 방법은 다양한 인스턴스 유형을 수동으로 선택하는 대신, 요구되는 속성을 설정해 AWS가 적합한 인스턴스를 자동으로 선택하도록 한다.
- 시작 탬플릿(Launch Template)
- ASG 내에서 EC2 인스턴스를 시작하는 방법에 대한 정보가 포함되어 있다.
- AMI 및 인스턴스 유형, EC2 사용자 데이터, EBS 볼륨, 보안 그룹, SSH 키 페어, EC2 인스턴스의 IAM 역할 네트워크 및 서브넷 정보, 로드밸런서 정보 등 많은 정보가 포함되어 있다.
- ASG의 최소 및 최대 크기, 초기 용량, 스케일링 정책을 정의해야 한다.
Scaling 정책
4가지의 정책이 있다. 어떤 정책을 사용할 지는 애플리케이션이 수행하는 작업과 작동 방식에 따라 달라진다.
- 동적 스케일링
- 목표 추적 스케일링이 가능하다
- 설정이 매우 간단하다.
- CPU 사용률과 같은 ASG에 대한 메트릭을 정의하고 40% 같은 목표 값을 정의하는 것.
- 이렇게 정의하면 자동으로 ASG가 확장되거나 축소되어 이 메트릭을 약 40%로 유지할 수 있다.
- 단순 / 단계 스케일링
- CloudWatch Alarm을 정의하여, 오토 스케일링 그룹에 용량 단위를 추가하거나 제거하고자 할 때 알람이 발생하도록 하는 것.
- 예약 스케일링
- 사용 패턴을 기반으로 스케일링을 예상하는 것.
- 예를 들어, 금요일 오후 5시에 매번 새로운 사용자가 발생하니 이때만 최소 용량을 늘리는 경우
- 예측 스케일링
- 지속적으로 부하를 예측한 다음 미리 예약을 시작하는 방법. 반복되는 패턴이 있을 때 좋은 방법이다.
- ASG는 자동으로 과거 부하를 분석한 다음 예측치를 생성하여 예측치를 기반으로 스케일링 작업을 예약한다.
- 주기적인 데이터가 있는 경우 유용하다.
Scaling Cooldown
스케일링 작업이 있은 후(인스턴스를 추가하거나 제거할 때마다)에 쿨다운 시간을 가진다.(기본적으로 300초) 이 시간동안은 ASG는 추가 인스턴스를 개시하거나 종료하지 않는다.
이러한 쿨다운 시간을 가지는 이유는, 메트릭이 안정화되도록 하고 새로운 인스턴스가 적용되어 새로운 메트릭이 어떻게 변할지를 지켜보는 시간을 가지기 위해서다.
따라서, 준비된 도구를 사용하여 EC2 인스턴스의 설정 시간을 줄여 요청을 더 빠르게 처리할 수 있도록 하는 것이 좋다.
EC2 인스턴스를 설정하는 데 시간을 소비하지 않으면 훨씬 더 빠르게 활성화될 수 있기 때문에 쿨다운 시간을 줄일 수 있고, ASG를 더욱 동적으로 확장 및 축소할 수 있다.