Amazon ECS에서 컨테이너 예약하기

Amazon ECS에서 컨테이너 예약하기

Amazon ECS 스케줄러(서비스, 독립 실행 태스크, 예약 태스크)와 컴퓨팅 옵션(용량 제공자 전략, launch type)을 알아봐요.

출처: 문서

본문

Amazon Elastic Container Service (Amazon ECS)는 컨테이너화된 워크로드에 유연한 스케줄링 기능을 제공하는 공유 상태(shated state), 낙관적 동시성(optimistic concurrency) 시스템이에요. Amazon ECS 스케줄러는 Amazon ECS API와 동일한 클러스터 상태 정보를 사용해 적절한 배치 결정을 내려요.

Amazon ECS는 장기 실행 태스크와 애플리케이션을 위한 서비스 스케줄러(service scheduler)를 제공해요. 또한 배치 작업이나 단일 실행 태스크를 위한 독립 실행 태스크 또는 예약 태스크를 실행하는 기능도 제공해요. 요구 사항에 가장 잘 맞도록 태스크 배치 전략과 제약을 지정할 수 있어요. 예를 들어 태스크를 여러 가용 영역에 걸쳐 실행할지 단일 가용 영역 내에서 실행할지 지정할 수 있어요. 그리고 선택적으로 태스크를 사용자 지정 또는 타사 스케줄러와 통합할 수 있어요.

옵션 사용 시점 자세한 정보
Service 서비스 스케줄러는 장기 실행 상태 비저장 서비스와 애플리케이션에 적합해요. 서비스 스케줄러는 선택적으로 태스크가 Elastic Load Balancing 로드 밸런서에 등록되도록 보장해요. 서비스 스케줄러가 유지하는 서비스를 업데이트할 수 있어요. 여기에는 새 태스크 정의 배포나 실행 중인 원하는 태스크 수 변경이 포함될 수 있어요. 기본적으로 서비스 스케줄러는 태스크를 여러 가용 영역에 분산해요. 그러나 태스크 배치 전략과 제약을 사용해 태스크 배치 결정을 사용자 지정할 수 있어요. Amazon ECS services
Standalone task 독립 실행 태스크는 작업을 수행한 후 중지하는 배치 작업 같은 프로세스에 적합해요. 예를 들어 큐에 작업이 들어올 때 프로세스가 RunTask를 호출할 수 있어요. 태스크는 큐에서 작업을 가져와 작업을 수행한 후 종료해요. RunTask를 사용하면 기본 태스크 배치 전략이 클러스터 전체에 태스크를 무작위로 분산하도록 할 수 있어요. 이는 단일 인스턴스가 불균형하게 많은 수의 태스크를 받을 가능성을 최소화해요. Amazon ECS standalone tasks
Scheduled task 예약 태스크는 클러스터에서 설정된 간격으로 실행할 태스크가 있을 때 적합해요. EventBridge Scheduler를 사용해 일정을 만들 수 있어요. 백업 작업이나 로그 스캔을 위해 태스크를 실행할 수 있어요. 만든 EventBridge Scheduler 일정은 지정된 시간에 클러스터에서 하나 이상의 태스크를 실행할 수 있어요. 예약 이벤트를 특정 간격(N분, N시간, N일마다 실행)으로 설정할 수 있어요. 더 복잡한 스케줄링의 경우 cron 표현식을 사용할 수 있어요. Using Amazon EventBridge Scheduler to schedule Amazon ECS tasks

컴퓨팅 옵션 (Compute options)

Amazon ECS를 사용하면 태스크나 서비스가 실행될 인프라를 지정할 수 있어요. capacity provider 전략이나 launch type을 사용할 수 있어요.

Fargate의 경우 capacity provider는 Fargate와 Fargate Spot이에요. EC2의 경우 capacity provider는 등록된 컨테이너 인스턴스가 있는 Auto Scaling group이에요.

capacity provider 전략은 클러스터와 연결된 capacity provider에 태스크를 분산해요. 이미 클러스터와 연결되어 있고 상태가 ACTIVE 또는 UPDATING인 capacity provider만 capacity provider 전략에서 사용할 수 있어요. 클러스터를 만들 때 클러스터에 capacity provider를 연결할 수 있어요.

capacity provider 전략에서 선택적 base 값은 지정된 capacity provider에서 최소한으로 실행되는 태스크 수를 지정해요. capacity provider 전략에서 하나의 capacity provider에만 base를 정의할 수 있어요.

weight 값은 시작된 총 태스크 수 중 지정된 capacity provider를 사용하는 상대적 백분율을 결정해요. 다음 예시를 고려해 봐요. 두 capacity provider를 포함하고 둘 다 weight가 1인 전략이 있다고 가정해요. base 백분율에 도달하면 태스크는 두 capacity provider에 균등하게 분할돼요. 같은 논리를 사용해 capacityProviderA에 weight 1, capacityProviderB에 weight 4를 지정한다고 가정해 봐요. 그러면 capacityProviderA를 사용해 실행되는 태스크 하나마다 capacityProviderB를 사용하는 태스크 4개가 있어요.

컴퓨팅 옵션은 태스크를 Fargate 또는 수동으로 클러스터에 등록한 Amazon EC2 인스턴스에서 직접 시작해요.

더 알아보기 (Learn more)