Amazon ECS 클러스터 자동 확장 최적화하기

Amazon ECS 클러스터 자동 확장 최적화하기

Amazon EC2에서 Amazon ECS를 실행하는 고객은 클러스터 자동 확장(cluster auto scaling)을 활용해 Amazon EC2 Auto Scaling 그룹의 확장을 관리할 수 있어요. 클러스터 자동 확장을 사용하면 Amazon ECS가 Auto Scaling 그룹을 자동으로 확장하도록 구성하고 태스크 실행에만 집중하면 됩니다.

출처: 문서

본문

Amazon EC2에서 Amazon ECS를 실행하는 고객은 클러스터 자동 확장을 활용해 Amazon EC2 Auto Scaling 그룹의 확장을 관리할 수 있습니다. 클러스터 자동 확장을 사용하면 Amazon ECS가 Auto Scaling 그룹을 자동으로 확장하도록 구성하고, 태스크 실행에만 집중하면 돼요. Amazon ECS가 추가 개입 없이 Auto Scaling 그룹이 필요에 따라 축소·확장하도록 보장합니다. Amazon ECS 용량 공급자는 애플리케이션의 수요를 충족할 만큼 충분한 컨테이너 인스턴스가 있도록 하여 클러스터의 인프라를 관리하는 데 사용되어요.

클러스터 자동 확장이 내부적으로 어떻게 동작하는지 보려면 "Deep Dive on Amazon ECS Cluster Auto Scaling"을 참고하세요.

클러스터 자동 확장은 Auto Scaling 그룹과 CloudWatch 기반 통합에 의존해 클러스터 용량을 조정하므로, 다음과 같은 고유한 지연 시간이 있습니다.

  • CloudWatch 메트릭 게시
  • CapacityProviderReservation 메트릭이 CloudWatch 알람(높음과 낮음)을 위반하는 데 걸리는 시간
  • 새로 시작된 Amazon EC2 인스턴스가 워밍업하는 데 걸리는 시간

더 빠른 배포를 위해 클러스터 자동 확장을 더 민첩하게 만드는 조치를 할 수 있습니다.

용량 공급자 단계 확장 크기

Amazon ECS 용량 공급자는 애플리케이션 수요를 충족하도록 컨테이너 인스턴스를 늘리거나 줄입니다. Amazon ECS가 시작할 최소 인스턴스 수는 기본값이 1입니다. 보류 중인 태스크를 배치하는 데 여러 인스턴스가 필요하다면 이는 배포에 추가 시간을 더할 수 있어요. Amazon ECS API로 minimumScalingStepSize를 늘려 Amazon ECS가 한 번에 확장·축소하는 최소 인스턴스 수를 증가시킬 수 있습니다. maximumScalingStepSize가 너무 낮으면 한 번에 확장·축소할 수 있는 컨테이너 인스턴스 수가 제한되어 배포 속도가 느려질 수 있습니다.

참고: 이 구성은 현재 CreateCapacityProvider 또는 UpdateCapacityProvider API로만 사용 가능합니다.

인스턴스 워밍업 기간

인스턴스 워밍업 기간은 새로 시작된 Amazon EC2 인스턴스가 Auto Scaling 그룹의 CloudWatch 메트릭에 기여할 수 있게 되는 시간입니다. 지정된 워밍업 기간이 지나면 인스턴스는 Auto Scaling 그룹의 집계 메트릭에 포함되고, 클러스터 자동 확장은 필요한 인스턴스 수를 추정하는 다음 계산 반복을 진행합니다.

instanceWarmupPeriod의 기본값은 300초이며, CreateCapacityProvider 또는 UpdateCapacityProvider API로 더 낮은 값으로 구성해 더 민첩하게 확장할 수 있습니다. 과잉 프로비저닝을 피하려면 60초보다 크게 설정할 것을 권장합니다.

여유 용량(Spare capacity)

용량 공급자에 태스크를 배치할 컨테이너 인스턴스가 없으면, 즉석에서 Amazon EC2 인스턴스를 시작해 클러스터 용량을 늘리고, 부팅될 때까지 기다린 뒤에 컨테이너를 시작해야 합니다. 이는 태스크 시작 속도를 크게 낮출 수 있어요. 두 가지 옵션이 있습니다.

  • 이미 시작되어 태스크를 실행할 준비가 된 여유 Amazon EC2 용량이 있으면 효과적인 태스크 시작 속도가 높아집니다. Target Capacity 구성을 사용해 클러스터에 여유 용량을 유지하고 싶다고 표시할 수 있습니다. 예를 들어 Target Capacity를 80%로 설정하면 클러스터가 항상 20%의 여유 용량을 유지해야 한다는 뜻입니다. 이 여유 용량 덕분에 독립 실행형 태스크를 즉시 시작할 수 있고 태스크 시작이 스로틀링되지 않습니다. 이 방식의 트레이드오프는 여유 클러스터 용량 유지로 인한 잠재적 비용 증가입니다.
  • 고려할 수 있는 대안은 용량 공급자가 아니라 서비스에 헤드룸을 추가하는 것입니다. 즉, 여유 용량을 시작하도록 Target Capacity 구성을 줄이는 대신, 대상 추적 확장 메트릭이나 서비스 자동 확장의 단계 확장 임계값을 수정해 서비스의 복제본 수를 늘리는 것입니다. 이 방식은 급증하는 워크로드에만 도움이 되며, 새 서비스를 배포해 처음으로 0에서 N 태스크로 갈 때는 효과가 없습니다. 관련 확장 정책에 대한 자세한 내용은 Amazon Elastic Container Service Developer Guide의 "Target Tracking Scaling Policies" 또는 "Step Scaling Policies"를 참고하세요.

더 알아보기 (Learn more)

  • Amazon ECS 클러스터 자동 확장에 대한 자세한 내용은 AWS 공식 문서를 참고해 주세요.