AWS/AWS 알아두면 좋은 지식

[ASG] scaling cooldown period에 대한 고찰

[앙금빵] 2024. 12. 8.

내용

현재 모든 ASG 대상으로 Scale-Out 정책이 구성되어져 있다. 여기서, 별도 코드 개입 없이 scaling cooldown 설정과 Cloudwatch Alarm을 활용하여 Scale-In 메커니즘 구현을 진행하는데 목표를 두었다.

 

Step Scaling 방식이나 ECS Capacity Provider를 활용하면 특정 조건을 달성하였을 때 자동으로 수량조절을 진행하는 기능을 제공하나, 서비스 특성상 언제 다시 스파이크성 트래픽이 발생할 줄 모르기에 내부적으로 설계된 메커니즘을 바탕으로 자동으로 수량조절이 되어지는 방향보다는 Scale-In 조건을 사용자측에서 조금 더 보수적으로 커스터마이징 하는 것을 목표로 두었다. (목적은 Scale-Out 된 기준시점으로 n 시간동안 낮은 CPU 사용률을 충족할 시 Scale-In 메커니즘 트리거)

 

이를 달성하기 위해 Cloudwatch Alarm & Cooldown Period 조합을 통해 문제를 해결하려고 하였다. 그러나, 이는 불가능한 결론에 이르었다. 이유로써는 각각 정의된 Scaling Policy에 대한 cooldown period가 Policy 레벨에서 개별적으로 적용되는 것이 아닌, ASG레벨에서 공통적으로 적용되어지기 때문이다. 다시말해 ASG scaling policy내에서 어느 하나가 트리거가 되면 그것을 policy별로 독립적으로 scaling activity에 대한 cooldown을 구분하는 것이 아닌 공통 속성으로 정의되어진다.

 

내용을 더 자세하게 정리하자면 한 ASG 정책에서 아래와 같이 정의되어져 있을 경우에 대하여 알아보자.

  • 2분동안 CPU 사용율 50% 초과시 2대 증설 (cooldown 120초)
  • 2분동안 CPU 사용율 30% 미만시 2대 축소 (cooldown 7200초)

 

아래는 처음에 헷갈린 부분과 정정한 내용을 정리한 부분이다.

  • Scale-In 이 발현되면 Scale-Out 발현여부과 관계없이 cooldown period(7200초)는 Scale-In 정책레벨에서 활동을 기준으로 한다. Scale-Out Cooldown 설정은 120초이기에 120초 뒤에 Scale-Out은 언제든 발생할 수 있다.(x)
  • Scale-In 이 발현되면 scaling activity 가 활성화 된 내용이 기록되며 7200초동안 ASG 내 다른 어떠한 Scaling Policy가 동작하지 않는다. 7200초가 지나야 Scale-Out 메커니즘이 트리거될 수 있다. (o)

 

  • Scale-Out 이 발현되면 Scale-In 발현여부과 관계없이 cooldown period(120초)는 Scale-Out 정책레벨에서 활동을 기준으로 한다. Scale-In Policy Cooldown 설정은 7200초이기에 조건을 충족하더라도 7200초 뒤에 Scale-In이 트리거될 수 있다. (x)
  • Scale-Out 이 발현되면 scaling activity 가 활성화 된 내용이 기록되며 120초동안 ASG 내 다른 어떠한 Scaling Policy가 동작하지 않는다. 120초가 지나면 Scale-In 메커니즘이 트리거될 수 있다. (o)

댓글