Cloud_AWS 오토 스케일링 서비스

AWS 오토 스케일링(Auto Scaling)?

스케일링으로 클라우드 자원을 동적으로 확장하거나 축소하여 클라우드 자원의 규모를 조정한다.

AWS 오토 스케일링 기능으로 클라우드 자원 규모를 조정하는 대상에는

EC2, ECS, DynamoDB의 테이블 및 인덱스, Aurora의 복제본 등이 있다.

EC2 인스턴스 대상으로 하는 EC2 오토 스케일링이 가장 많이 사용되는 서비스이며 무료 제공 서비스다.

오토스케일링은 수직/수평 스케일링으로 나뉜다.

수직 스케일링: IT 자원의 용량을 확장하거나 축소하는 기능 (스케일 업/다운)

수평 스케일링: IT 자원의 수량을 확장하거나 축소하는 기능 (스케일 아웃/인)


EC2 오토 스케일링(Auto Scaling)이란?

EC2 오토 스케일링은 애플리케이션의 워크로드에 따라 EC2 인스턴스 수를 자동으로 조정하는 기능이다.

트래픽이 증가하면 인스턴스를 추가하고, 감소하면 불필요한 인스턴스를 종료하여 비용을 절감하고

애플리케이션의 안정성을 유지할 수 있다.

오토 스케일링을 사용하면 오토 스케일링 그룹(Auto Scaling Group, ASG) 이라는 인스턴스 그룹을 생성하며,

최소, 최대, 원하는 인스턴스 수를 설정하여 자동으로 관리할 수 있다.

 

EC2 오토 스케일링 구성 요소

  1. 오토 스케일링 그룹(ASG)
    • EC2 인스턴스를 논리적으로 그룹화하여 관리
    • 최소/최대 인스턴스 수 및 원하는 인스턴스 수를 설정 가능
    • 인스턴스가 비정상적으로 종료되면 자동으로 새 인스턴스를 시작하여 가용성을 유지
  2. 구성 템플릿(Launch Template 또는 Launch Configuration)
    • 새 인스턴스를 생성할 때 사용할 AMI, 인스턴스 유형, 키 페어, 보안 그룹 등의 설정을 포함한 템플릿
    • Launch Template이 최신 기능을 지원하므로, 가능하면 Launch Configuration 대신 Launch Template을 사용하는 것이 권장
  3. 조정 정책(Scaling Policies)
    • 오토 스케일링 그룹의 크기를 조정하는 방법을 정의
    • 다양한 조정 방식이 있으며, 대표적인 방식은 아래와 같음
      • 동적 스케일링(Dynamic Scaling): CPU 사용률, 네트워크 트래픽 등의 모니터링 지표를 기준으로 자동 조정
      • 예측 스케일링(Predictive Scaling): 기계 학습을 활용해 향후 트래픽 패턴을 예측하고 미리 인스턴스를 조정
      • 스케줄링(Scheduled Scaling): 특정 시간이나 요일에 맞춰 자동으로 조정

EC2 오토 스케일링의 인스턴스 생명 주기

EC2 오토 스케일링에서 인스턴스는 일반적인 EC2 인스턴스와는 다른 특정한 생명 주기를 따른다.
이 생명 주기는 인스턴스가 시작될 때부터 종료될 때까지의 과정을 의미한다.

 

인스턴스 확장(스케일 아웃) 과정

  • 사용자가 오토 스케일링 그룹의 크기를 직접 증가시키는 경우
  • 조정 정책(Scaling Policy) 에 의해 자동으로 인스턴스를 추가하는 경우 (예: CPU 사용률 증가)
  • 예약된 작업(Scheduled Scaling) 에 따라 특정 시간에 인스턴스를 추가하는 경우

확장 프로세스

  1. 오토 스케일링은 Launch Template(또는 Launch Configuration) 을 사용해 새로운 인스턴스를 시작
  2. 새 인스턴스는 먼저 대기(Pending) 상태로 시작
  3. 인스턴스가 완전히 구성되면 실행(Running) 상태로 전환
  4. 로드 밸런서가 연결되어 있다면, 오토 스케일링이 로드 밸런서에 인스턴스를 자동으로 등록

인스턴스 축소(스케일 인) 과정

  • 사용자가 오토 스케일링 그룹의 크기를 직접 감소시키는 경우
  • 조정 정책(Scaling Policy) 에 의해 자동으로 인스턴스를 제거하는 경우 (예: 트래픽 감소)
  • 예약된 작업(Scheduled Scaling) 에 따라 특정 시간에 인스턴스를 종료하는 경우

축소 프로세스

  1. 오토 스케일링은 종료할 인스턴스를 결정(종료 정책에 따라 선택)
  2. 선택된 인스턴스는 종료 중(Terminating) 상태로 변경되며, 다시 실행 불가
  3. 로드 밸런서가 연결되어 있다면, 오토 스케일링은 로드 밸런서에서 해당 인스턴스를 먼저 제거한 후 종료
  4. 인스턴스가 완전히 종료되면 오토 스케일링 그룹에서 삭제

 - 드레이닝(Draining) 상태?

  • 인스턴스를 종료하기 전에, 기존 요청을 모두 처리할 시간을 주기 위해 일정 시간 동안 대기하는 상태
  • 예를 들어, 인스턴스에서 파일을 다운로드 중인 경우, 해당 요청이 끝날 때까지 기다렸다가 종료
  • 드레이닝 상태에서는 새로운 연결을 받지 않지만, 기존 연결은 정상적으로 마무리

EC2 오토 스케일링 조정 옵션

인스턴스 유지 인스턴스 개수를 항상 일정하게 유지
수동 조정 사용자가 직접 용량을 변경
동적 조정 - 대상 추적 조정 특정 지표(예: CPU 50%) 유지
동적 조정 -  단계 조정 여러 단계의 임곗값을 설정해 점진적 조정
예시: CPU 60% 초과 → 1개 추가, 80% 초과 → 3개 추가
동적 조정 -  단순 조정 설정한 임곗값 발생 시 고정된 개수만큼 증감
예시: CPU 70% 초과 → 항상 2개 추가
예약된 조정 특정 시간에 맞춰 조정
예측 조정 과거 트래픽을 분석해 자동으로 조정