본문 바로가기

AWS

[AWS] Amazon ECS Managed Instances 구성 가이드

반응형

Amazon ECS Managed Instances는 Amazon ECS에서 EC2 인스턴스 기반 워크로드를 위한 완전관리형 컴퓨팅 옵션입니다. AWS가 인프라(프로비저닝, 스케일링, 패치, 최적화 등)를 자동으로 처리하면서도 EC2의 유연성을 유지합니다.

Managed Instances는 다음과 같은 핵심 동작을 수행합니다:

  • 컨테이너 워크로드에 맞는 EC2 인스턴스를 자동으로 프로비저닝 및 배치합니다.
  • 다중 AZ에 걸쳐 인스턴스를 분산하고 자동으로 가용성을 보장합니다.
  • 유휴 또는 활용도가 낮은 인스턴스를 감지하여 Drain 및 종료하고, 필요하면 새 인스턴스 생성합니다.
  • 다양한 인스턴스 유형(GPU, CPU 아키텍처 등)을 사용하거나 요구사항에 맞춰 인스턴스를 사용자 지정할 수 있습니다.

Managed Instances는 ECS Capacity Provider의 한 형태로 구성하며, 기존 Fargate/Fargate Spot과 같이 사용할 수 있습니다.

 

[AWS] Amazon ECS Managed Instances 구성 가이드
[AWS] Amazon ECS Managed Instances 구성 가이드


Configurable Scale-In Delay란?

Scale-In Delay는 Managed Instances가 인스턴스를 종료(Scale-In)하기 전에 기다리는 시간을 워크로드 특성에 맞게 설정할 수 있도록 하는 구성 옵션입니다. 이전에는 AWS가 내부 휴리스틱으로만 판단했지만, 이제 사용자가 직접 delay 시간을 제어할 수 있습니다.

주요 동작:

  • scaleInAfter 값을 0~3600초(0~60분) 사이로 설정할 수 있습니다.
  • -1로 설정 시 Managed Instances의 자동 Scale-In 최적화가 완전히 비활성화됩니다. 이 경우 인스턴스는 최대 14일 주기 패치 타이밍까지 유지됩니다.
  • delay는 idle 또는 underutilized 상태 감지 이후 인스턴스 종료/Drain 시작 전까지의 대기 시간을 의미합니다.

설정 방법

아래는 AWS Console, AWS CLI, CDK, CloudFormation 등을 통해 scaleInAfter 값을 구성하는 방법입니다.

사전 요구사항

  1. ECS 클러스터가 존재해야 합니다.
  2. Managed Instances Capacity Provider를 사용할 IAM 권한이 있어야 합니다.
  3. 작업 정의(Task Definition)는 Managed Instances를 사용하도록 설정되어야 합니다 (requiresCompatibilities: ["MANAGED_INSTANCES"]). 

1) 콘솔에서 설정하는 법

  1. AWS Console에서 ECS → 클러스터 → Capacity Providers로 이동합니다.
  2. Managed Instances Capacity Provider를 생성 또는 편집합니다.
  3. Scale-In Delay (scaleInAfter) 항목을 찾아 원하는 값을 입력합니다.
    • 0: 즉시 최적화 시작
    • 1800: 30분 지연
    • -1: 자동 최적화 비활성화
  4. 저장 후 클러스터에 적용합니다.

주의: Delay 설정은 워크로드 특성을 고려해야 합니다. 예를 들어 Batch Job 빈도가 낮으면 더 긴 Delay 설정이 비용-가용성 균형에 유리합니다.

2) AWS CLI로 설정하는 법

아래 예시는 Managed Instances Capacity Provider의 scaleInAfter 값을 1800초로 업데이트하는 방법입니다.

aws ecs update-capacity-provider \
  --name my-managed-instances-cp \
  --auto-scaling-group-provider \
      managedScalingStatus=ENABLED,scaleInAfter=1800,managedTerminationProtection=DISABLED
 
  • managedScalingStatus=ENABLED: Managed Instances 자동 스케일링 활성화
  • scaleInAfter=1800: 30분 Delay
  • managedTerminationProtection=DISABLED: 인스턴스 종료 보호 끔

3) CloudFormation 예시

CloudFormation 템플릿에 Managed Instances Capacity Provider를 정의할 때 다음처럼 ScaleInAfter를 설정할 수 있습니다.

Resources:
  ManagedInstancesCapacityProvider:
    Type: AWS::ECS::CapacityProvider
    Properties:
      AutoScalingGroupProvider:
        ManagedScaling:
          Status: ENABLED
          ScaleInAfter: 1800
        ManagedTerminationProtection: DISABLED
 
CloudFormation을 적용하면 해당 Delay 값이 Capacity Provider에 반영됩니다.

운영 시 고려사항

  • 짧은 요청/응답 서비스: Scale-In을 빠르게 진행해 비용 최적화.
  • Batch/이벤트성 작업: Delay를 늘려 인스턴스 churn을 줄이고 준비 시간을 확보.
  • 예측 불가능 트래픽: 약간 여유있는 Delay로 급격한 Scale-Out 시 대기 인스턴스 확보.

모니터링 및 검증

  1. CloudWatch Metrics를 통해 Managed Instances 인스턴스 수 및 상태 변화를 모니터링합니다.
  2. ECS 서비스 이벤트에서 Delay 적용 여부 및 Scale-In 시작 시간을 확인합니다.
  3. 설정 반영 후 실제 작업 종료 → Delay만큼 유지 → 종료 흐름을 검증합니다.
반응형