오토 스케일링 그룹(Auto Scaling Group)은 애플리케이션의 수요 변화에 따라 자동으로 EC2 인스턴스의 수를 조정하는 기능이다. 이 기능을 통해 애플리케이션은 항상 최적의 성능을 유지하며, 트래픽 증가 시 인스턴스를 자동으로 추가하고 트래픽 감소 시 불필요한 인스턴스를 종료하여 비용 효율성을 극대화할 수 있다. 이러한 오토 스케일링 그룹은 다양한 설정 옵션을 통해 세밀하게 조정할 수 있다.
오토 스케일링 그룹을 설정하기 위해서는 먼저 런치 템플릿(Launch Template)을 정의해야 한다. 런치 템플릿은 인스턴스의 AMI, 인스턴스 유형, 키 페어, 보안 그룹, 네트워크 설정 등을 포함한 설정 정보들을 저장한 템플릿이다. 런치 템플릿을 통해 오토 스케일링 그룹에서 사용할 인스턴스의 설정을 정의한 후, 오토 스케일링 그룹을 생성할 수 있다.
오토 스케일링 그룹은 최소 용량, 최대 용량, 원하는 용량이라는 세 가지 주요 파라미터를 통해 인스턴스 수를 조절한다. 최소 용량은 오토 스케일링 그룹이 유지해야 하는 인스턴스의 최소 수를 의미하며, 최대 용량은 허용 가능한 최대 인스턴스 수를 나타낸다. 원하는 용량은 오토 스케일링 그룹이 유지하려고 하는 인스턴스 수를 의미하며, 오토 스케일링이 동작할 때 목표로 하는 인스턴스 수이다.
오토 스케일링 그룹의 주요 기능 중 하나는 헬스 체크를 통한 인스턴스 상태 확인이다. 오토 스케일링 그룹은 주기적으로 인스턴스의 상태를 점검하며, 비정상적인 상태의 인스턴스를 감지하면 자동으로 해당 인스턴스를 교체한다. 이 과정은 애플리케이션의 가용성을 높여준다. 또한, 오토 스케일링 그룹은 EC2 인스턴스의 상태뿐만 아니라, ELB(Elastic Load Balancer)와의 연동을 통해 더 세밀한 상태 점검을 수행할 수 있다.
오토 스케일링 정책(Auto Scaling Policy)
오토 스케일링 정책에는 크게 세 가지 종류가 있다.
첫 번째는 수요 기반 스케일링 정책이다. 이 정책은 CPU 사용률, 메모리 사용률, 네트워크 트래픽 등 특정 지표를 모니터링하고, 설정된 임계값을 초과할 경우 인스턴스를 추가한다. 예를 들어, CPU 사용률이 70%를 초과하면 새로운 인스턴스를 시작하고, 30% 이하로 떨어지면 인스턴스를 종료하는 식이다.
두 번째는 일정 기반 스케일링 정책이다. 이 정책은 특정 시간대에 인스턴스를 추가하거나 제거하는 방식으로 동작한다. 예를 들어, 매일 오전 9시에 인스턴스를 추가하고, 오후 6시에 인스턴스를 줄이는 등의 일정에 따라 스케일링을 수행할 수 있다.
세 번째는 예측 기반 스케일링 정책이다. 이 정책은 과거 데이터를 분석하여 미래의 트래픽 패턴을 예측하고, 이에 따라 미리 인스턴스를 준비하는 방식이다.
오토 스케일링을 설정할 때 중요한 요소 중 하나는 경보(alarm) 설정이다. 경보는 특정 조건이 충족되었을 때 알림을 보내거나 스케일링 동작을 트리거하는 역할을 한다. CloudWatch를 사용하여 경보를 설정할 수 있으며, 이는 오토 스케일링 그룹과 통합되어 작동한다. 예를 들어, 특정 인스턴스의 CPU 사용률이 일정 수준을 초과하면 경보가 발생하고, 이에 따라 오토 스케일링 그룹이 새로운 인스턴스를 추가하도록 설정할 수 있다.