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 구성 가이드](https://blog.kakaocdn.net/dna/daAIMm/dJMcai9HrrM/AAAAAAAAAAAAAAAAAAAAAD9SpijZtT8k3FARrP6oG97uYsG4nt-IAoGBKUq9KGeG/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1767193199&allow_ip=&allow_referer=&signature=%2BzZPBvXFLdehdHynmwFK5jTghVU%3D)
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 값을 구성하는 방법입니다.
사전 요구사항
- ECS 클러스터가 존재해야 합니다.
- Managed Instances Capacity Provider를 사용할 IAM 권한이 있어야 합니다.
- 작업 정의(Task Definition)는 Managed Instances를 사용하도록 설정되어야 합니다 (requiresCompatibilities: ["MANAGED_INSTANCES"]).
1) 콘솔에서 설정하는 법
- AWS Console에서 ECS → 클러스터 → Capacity Providers로 이동합니다.
- Managed Instances Capacity Provider를 생성 또는 편집합니다.
- Scale-In Delay (scaleInAfter) 항목을 찾아 원하는 값을 입력합니다.
- 0: 즉시 최적화 시작
- 1800: 30분 지연
- -1: 자동 최적화 비활성화
- 저장 후 클러스터에 적용합니다.
주의: 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
운영 시 고려사항
- 짧은 요청/응답 서비스: Scale-In을 빠르게 진행해 비용 최적화.
- Batch/이벤트성 작업: Delay를 늘려 인스턴스 churn을 줄이고 준비 시간을 확보.
- 예측 불가능 트래픽: 약간 여유있는 Delay로 급격한 Scale-Out 시 대기 인스턴스 확보.
모니터링 및 검증
- CloudWatch Metrics를 통해 Managed Instances 인스턴스 수 및 상태 변화를 모니터링합니다.
- ECS 서비스 이벤트에서 Delay 적용 여부 및 Scale-In 시작 시간을 확인합니다.
- 설정 반영 후 실제 작업 종료 → Delay만큼 유지 → 종료 흐름을 검증합니다.
'AWS' 카테고리의 다른 글
| [AWS] ECS 롤링 배포 서비스 가용성 향상 방법 (0) | 2025.12.24 |
|---|---|
| [AWS] EKS 네트워크 observability dashboard 구성 (0) | 2025.12.23 |
| [AWS] EKS Provisioned Control Plane 구성 방법 (1) | 2025.12.22 |
| [AWS] EKS, ECS 완전관리형 MCP 서버 설정 (0) | 2025.12.21 |
| [AWS] MSK에서 Lambda Kafka 이벤트 소스 매핑 구성 방법 (0) | 2025.12.21 |