Amazon ECS Managed Instances 자동 스케일링 및 태스크 배치

Amazon ECS Managed Instances 자동 스케일링 및 태스크 배치

Amazon ECS Managed Instances는 지능적인 알고리즘을 사용해 클러스터 용량을 자동으로 스케일링하고 인프라 전반에 걸쳐 태스크를 효율적으로 배치해요. 이러한 알고리즘이 어떻게 작동하는지 이해하면 서비스 구성을 최적화하고 배치 동작을 문제 해결하는 데 도움이 돼요.

출처: 문서

본문

태스크 배치 알고리즘 (Task placement algorithm)

Amazon ECS Managed Instances는 태스크를 스케줄링할 때 가용성, 리소스 활용도, 네트워크 요구 사항의 균형을 맞추는 정교한 배치 알고리즘을 사용해요.

가용 영역 확산 (Availability Zone spread)

기본적으로 Amazon ECS Managed Instances는 태스크를 여러 가용 영역에 확산시켜 가용성을 우선시해요.

  • 여러 태스크가 있는 서비스의 경우 Amazon ECS Managed Instances는 가능하면 서로 다른 가용 영역의 최소 3개 인스턴스에 분산되도록 보장해요.
  • 이 동작은 내결함성을 제공하지만 인스턴스당 리소스 활용도가 낮아질 수 있어요.
  • 가용 영역 확산은 bin packing 최적화보다 우선해요.

Bin packing 동작

Amazon ECS Managed Instances는 리소스 활용도를 최대화하기 위해 bin packing을 수행할 수 있지만, 이 동작은 네트워크 구성의 영향을 받아요.

  • bin packing을 달성하려면 서비스를 단일 서브넷을 사용하도록 구성하세요.
  • 다중 서브넷 구성은 리소스 밀도보다 가용 영역 분산을 우선시해요.
  • bin packing은 스케일링 이벤트 중보다 초기 서비스 시작 중에 더 자주 발생해요.

ENI 밀도 고려 사항

awsvpc 네트워크 모드를 사용하는 서비스의 경우 Amazon ECS Managed Instances는 배치 결정을 내릴 때 Elastic Network Interface(ENI) 밀도를 고려해요.

  • awsvpc 모드의 각 태스크는 전용 ENI가 필요해요.
  • 인스턴스 유형마다 태스크 밀도에 영향을 주는 ENI 한도가 달라요.
  • Amazon ECS Managed Instances는 대상 인스턴스를 선택할 때 ENI 가용성을 고려해요.

참고: 배치 결정을 최적화하기 위해 ENI 밀도 계산이 지속적으로 개선되고 있어요.

용량 공급자 결정 로직 (Capacity provider decision logic)

Amazon ECS Managed Instances 용량 공급자는 여러 요인에 기반해 스케일링 및 배치 결정을 내려요.

  • 리소스 요구 사항 – 대기 중인 태스크의 CPU, 메모리, 네트워크 요구 사항.
  • 인스턴스 가용성 – 기존 인스턴스 전반의 현재 용량과 활용도.
  • 네트워크 제약 – 서브넷 구성과 ENI 가용성.
  • 가용 영역 분산 – 여러 가용 영역에 걸친 내결함성 유지.

구성 옵션 (Configuration options)

서브넷 선택 전략

서브넷 구성은 태스크 배치 동작에 큰 영향을 미쳐요.

  • 다중 서브넷 (기본값): 높은 가용성을 위해 가용 영역 확산을 우선시해요. 인스턴스당 리소스 활용도가 낮아질 수 있어요. 내결함성이 필요한 프로덕션 워크로드에 권장돼요.
  • 단일 서브넷: 더 높은 리소스 활용도를 위해 bin packing을 활성화해요. 태스크를 하나의 가용 영역에 집중시켜 내결함성이 줄어들어요. 개발 또는 비용 최적화 워크로드에 적합해요.

네트워크 모드 고려 사항

선택한 네트워크 모드는 배치 결정에 영향을 줘요.

  • awsvpc 모드 – 각 태스크에 전용 ENI가 필요해 인스턴스당 태스크 밀도가 제한돼요.
  • host 모드 – 태스크가 호스트 네트워크를 직접 사용하며, 배치는 주로 리소스 가용성에 의해 결정돼요.

CPU 아키텍처 고려 사항

태스크 정의에 지정한 cpuArchitecture는 태스크를 특정 아키텍처에 배치하는 데 사용돼요. cpuArchitecture를 지정하지 않으면 Amazon ECS는 용량 공급자 구성에 따라 사용 가능한 모든 CPU 아키텍처에 태스크를 배치하려고 시도해요. X86_64 또는 ARM64를 지정할 수 있어요.

태스크 배치 문제 해결 (Troubleshooting task placement)

일반적인 배치 패턴

예상되는 배치 패턴을 이해하면 정상 동작과 잠재적 문제를 구분하는 데 도움이 돼요.

  • 확산 분포 (Spread distribution): 부분 활용도로 여러 인스턴스에 걸쳐 태스크가 분산돼요. 다중 서브넷 사용 시 정상 동작이에요. 리소스 효율성보다 가용성을 우선시함을 나타내요.
  • 집중 배치 (Concentrated placement): 더 높은 활용도로 더 적은 인스턴스에 여러 태스크가 배치돼요. 단일 서브넷 구성에서 예상되는 동작이에요. 초기 서비스 시작 중에 발생할 수 있어요.
  • 고르지 못한 분포 (Uneven distribution): 일부 인스턴스는 많이 활용되고 다른 인스턴스는 저활용으로 남아 있어요. ENI 한도나 리소스 제약을 나타낼 수 있어요. 인스턴스 유형과 네트워크 구성을 검토하는 것을 고려하세요.

배치 동작 최적화

특정 요구 사항에 맞게 태스크 배치를 최적화하려면:

  • 가용성 요구 사항과 비용 최적화 요구를 평가하세요.
  • 우선순위에 따라 적절한 서브넷 구성을 선택하세요.
  • 네트워크 모드에 적합한 ENI 용량을 갖춘 인스턴스 유형을 선택하세요.
  • 배치 패턴을 모니터링하고 필요에 따라 구성을 조정하세요.

모범 사례 (Best practices)

  • 프로덕션 워크로드의 경우 – 서로 다른 가용 영역의 여러 서브넷을 사용해 높은 가용성을 보장하고 리소스 활용도의 트레이드오프를 수용하세요.
  • 개발 또는 테스트의 경우 – 리소스 활용도를 최대화하고 비용을 줄이기 위해 단일 서브넷 구성을 고려하세요.
  • awsvpc 모드의 경우 – 배치 제약을 피하기 위해 충분한 ENI 용량을 갖춘 인스턴스 유형을 선택하세요.
  • 비용 최적화의 경우 – 활용 패턴을 모니터링하고 가용성과 효율성의 균형을 맞추도록 서비스 구성을 조정하세요.
  • 문제 해결의 경우 – 예상치 못한 배치 패턴을 조사할 때 서브넷 구성과 네트워크 모드를 검토하세요.