본문 바로가기

Certificate/AWS SOA-C02

[AWS] SQS 기반 ASG, EventBridge(CloudWatch Events) 조합, 한 번에 이해하기

https://docs.aws.amazon.com/ko_kr/autoscaling/ec2/userguide/as-using-sqs-queue.html

SQS 기반 ASG 조합

SQS 기반 Auto Scaling은 Amazon EC2 Auto Scaling Group이 SQS 대기열의 메시지 수(또는 부하)를 기준으로 EC2 인스턴스 수를 동적으로 조절하는 아키텍처이다.

  • 메시지 수 증가 → EC2 인스턴스 스케일 아웃
  • 메시지 수 감소 → EC2 인스턴스 스케일 인

이 구조는 파일 처리, 이미지 변환, 백그라운드 작업 처리 등 비동기 대기열 기반 애플리케이션에 적합하다.

 

EventBridge(CloudWatch Events) 주요 지표

Metric 설명 활용도
ApproximateNumberOfMessagesVisible 처리 대기 중인 메시지 수 ✅ 주요 확장 기준
ApproximateNumberOfMessagesNotVisible 처리 중(읽혔지만 삭제되지 않음) 메시지 수 참고용
MessagesPerInstance (사용자 정의) 메시지 수 ÷ InService 인스턴스 수 ✅ 실무 권장 방식
ApproximateAgeOfOldestMessage 가장 오래된 메시지의 대기 시간 지연 상태 진단에 유용

 


 

예제 문제

한 회사가 고객의 판매 데이터를 분석합니다. 고객이 회사의 Amazon S3 버킷 중 하나에 파일을 업로드하면 Amazon 리소스 이름(ARN) 객체가 포함된 Amazon Simple Queue Service(Amazon SQS) 대기열에 메시지가 게시됩니다. Amazon EC2 인스턴스에서 실행되는 애플리케이션이 대기열을 폴링하고 메시지를 처리합니다. 처리 시간은 파일 크기에 따라 달라집니다. 고객들은 파일 처리 지연을 보고하고 있습니다. SysOps 관리자는 첫 번째 단계로 Amazon EC2 Auto Scaling을 구성하기로 결정했습니다. SysOps 관리자는 기존 EC2 인스턴스를 기반으로 Amazon Machine Image(AMI)를 생성합니다. 또한 SysOps 관리자는 AMI를 참조하는 시작 템플릿도 생성합니다.
SysOps 관리자는 응답 시간을 개선하기 위해 Auto Scaling 정책을 어떻게 구성해야 할까요?

  • A. 시작 템플릿에 여러 인스턴스 크기를 추가합니다. ApproximateNumberOfMessagesVisible 메트릭을 기반으로 자동 크기 조정 정책을 생성하여 대기열의 메시지 수에 따라 인스턴스 크기를 선택합니다.
  • B. 대기열에 있는 지연된 메시지 수에 따라 인스턴스 수를 조정하기 위해 ApproximateNumberOfMessagesDelayed 메트릭을 기반으로 자동 크기 조정 정책을 만듭니다.
  • C. Auto Scaling 그룹의 ASGAverageCPUUtilization 메트릭과 GroupPendingInstances 메트릭을 기반으로 사용자 지정 메트릭을 생성합니다. 메트릭을 계산하고 1분마다 Amazon CloudWatch에 게시하도록 애플리케이션을 수정합니다. 이 메트릭을 기반으로 인스턴스 수를 확장하는 Auto Scaling 정책을 생성합니다.
  • D. ApproximateNumberOfMessagesVisible 메트릭과 Auto Scaling 그룹의 InService 상태 인스턴스 수를 기반으로 사용자 지정 메트릭을 생성합니다. 메트릭을 계산하고 1분마다 Amazon CloudWatch에 게시하도록 애플리케이션을 수정합니다. 이 메트릭을 기반으로 인스턴스 수를 확장하는 Auto Scaling 정책을 생성합니다.
더보기

답 : D

이유 : 사용자 지정 메트릭(ApproximateNumberOfMessagesVisible + InService 상태 인스턴스 계산) 값으로 단순 메시지 수가 아니라 인스턴스당 메시지 비율을 기반으로 상세한 스케일링을 수행할 있다.  

 

A 아닌 이유 : 인스턴스 크기를 수정하는 선택지인데, 비동기를 처리하기 위해서는 병렬로 처리하는 거싱 유리하므로 수직 스케일링(스케일업) 아니라 수평 스케일링(스케일아웃) 수행해야 한다.

 

B가 아닌 이유 : ApproximateNumberOfMessagesDelayed 의 경우 가시성 지연 시간에 의해 재처리되는 지연된 메시지 수를 의미한다. 즉, 해당 인스턴스에서 현재 재처리하는 메시지 수(부하의 척도)가 아니라는 것이다. 일반적인 스케일링은 ApproximateNumberOfMessagesVisible 메트릭을 사용한다.