모노산달로스의 행보

[AWS] ASG(Auto Scaling Group)의 대한 이해 본문

Infrastructure/AWS

[AWS] ASG(Auto Scaling Group)의 대한 이해

모노산달로스 2024. 10. 17. 00:21

aws - ASG

 

AWS(Amazon Web Services)

 

 

AWS(Amazon Web Services)는 아마존이 제공하는 클라우드 컴퓨팅 서비스로, 서버, 스토리지, 네트워크 등을 클라우드를 통해 이용할 수 있습니다. 높은 안정성과 확장성을 갖춘 AWS는 클라우드 분야에서 높은 점유율을 차지하고 있습니다. 스파게티처럼 많은 기술이 존재하여 올바른 사용을 위해서는 꼭 학습이 필요합니다. 반대로 배워두면 많은 클라우드 기술을 사용할 수 있게 됩니다.

 


ASG(Auto Scaling Group)

 

What is ASG(Auto Scaling Group)?

 

ASG(Auto Scaling Group)란 서버의 생성과 제거를 자동화하는 서비스를 의미합니다. ASG에서 최소 및 최대 EC2 instance의 수를 설정할 수 있습니다. 이에 따라 scale-out과 scale-in을 수행합니다.

 

웹사이트나 애플리케이션의 사용자의 수는 계속 변화합니다. 따라서 시간이 지나면서 데이터 로드 수치가 변화할 수 있습니다. 이때 aws에서 서버를 빠르게 생성하고 제거할 수 있는데, 이를 자동화하는 것이 바로 ASG입니다.

 

ASG scale out with ELB

 

 

ELB와 연결하여 사용할 수도 있습니다. 로드 밸런서가 EC2 instance의 상태를 unhealthy 하다고 여기면 ASG가 인스턴스를 종료시키고 새로 만드는 것도 가능합니다. 만약 scale-out이 발생하면 해당 인스턴스에도 부하를 분산시킵니다.

 


 

Scaling Policies

You can define the capacity of an ASG

 

 

Scaling Policies는 ASG에서 인스턴스 수를 자동으로 조정하기 위한 규칙으로, 워크로드 변화에 따라 작동하는 방식을 설정하는 정책입니다. 생성 가능한 전략은 크게 두 가지로 나눌 수 있습니다.

 

Dynamic Scaling은 실시간 모니터링된 지표를 기반으로 하는 방식입니다. 세 가지 방법으로 다시 나누어 볼 수 있습니다.

Target Tracking Scaling
CPU 사용율과 같은 매트릭과 목표값을 지정합니다. 이에 따라 ASG가 실행됩니다.
간단하게 셋업이 가능합니다.

Simple / Step Scaling
CloudWatch alarm을 정의하여 일정 조건 달성시 알람을 발생시킵니다. 이에 따라 ASG가 실행됩니다.

Scheduled Scaling
미리 알려진 패턴을 기반으로 스케일링을 예측합니다.
예를 들어 매일 오후 1시에 사용자가 증가한다면 ASG가 해당 시각에 capacity를 증가시킵니다.

 

Predictive Scaling은 과거 데이터를 기반으로 하는 방식입니다.

지난 트래픽 패턴을 분석하여 예측치를 생성하고 스케일링 작업을 예약합니다.
예기치 못한 변화 대응에 특히 효과적입니다.

 

 


Good metrics to scale on

How to choose the right metric?

 

 

그렇다면 좋은 metric(측정 기준)에 대해서 이야기 해봅시다.

 

일반적으로는 CPU Utilization(CPU 사용률)을 주로 사용합니다. 인스턴스의 평균 CPU 사용률이 높아지면 활용도가 높아졌다는 것을 의미하기 때문입니다.

 

Request Count Per Target(대상별 요청수)를 사용할 수도 있습니다. EC2 instance는 한 번에 타깃별로 1000개의 요청이 들어오면 최적으로 작동합니다. 이에 맞추어 인스턴스 수를 조절할 수 있습니다.

 

Average Network IN / OUT(평균 네트워크 유입 / 유출)은 네트워크에 의존적인 서비스에서 사용을 고려할 수 있습니다. 다시 말해, 업로드와 다운로드가 잦고 인스턴스 병목 현상이 일어날 것이라 생각되는 경우가 그렇습니다.

 

이외에도 CloudWatch를 통해서 원하는 매트릭을 자유롭게 사용할 수 있습니다.

 


 

Scaling Cooldowns

What is Scaling Cooldowns?

 

Scaling Cooldowns란 스케일링 작업 후 인스턴스를 추가하거나 제거할 때마다 일정한 대기 시간을 가지는 것을 의미합니다. 쿨다운 시간 동안 ASG는 새롭게 인스턴스를 생성하거나 제거하지 않습니다.

 

왜 쿨다운이 존재할까요? 그 이유는 매트릭을 안정화하고 새로운 인스턴스가 적용된 뒤 매트릭의 변화를 살피기 위함입니다. 성능을 위해 ready-to-use AMI를 사용하면, EC2 instance 생성 시간을 줄여 요청을 더 빠르게 처리할 수도 있습니다.

 


 

ASG에 대한 내용이 끝이 났습니다. 이로서 고가용성과 확장성에서 시작하여 이것을 다루는 aws의 전반적인 서비스들을 모두 정리하였습니다.

 

이제 다음 포스트 부터는 RDS와 관련된 내용으로 넘어갑니다. RDS는 관계형 데이터 베이스 서비스로서 Aurora와 ElastiCache등 다양한 내용이 존재합니다.

 

아직 다룰 내용이 정말 많이 남아있습니다. 계속 정진해야겠습니다.