Amazon EC2 Container Service(ECS)를 사용하면 전체 Amazon EC2 인스턴스 클러스터에서 Docker 지원 애플리케이션을 쉽게 실행하고 관리할 수 있습니다. 로컬에서 컨테이너로 패키징된 애플리케이션은 Amazon ECS가 관리하는 컨테이너와 같은 방식으로 배포하고 실행합니다. Amazon ECS는 자체 클러스터 관리 인프라를 설치, 운영 및 조정할 필요가 없으므로, 리소스 필요와 가용성 요구 사항에 따라 전체 클러스터에 Docker 지원 애플리케이션의 일정을 설정할 수 있습니다. Amazon ECS를 사용하면 단일 컨테이너에서 시작하여 수백 개의 인스턴스에서 실행되는 수천 개의 컨테이너까지 일반적으로 애플리케이션을 실행하는 것처럼 쉽게 확장할 수 있습니다. 애플리케이션, 배치 작업, 마이크로 서비스 등 어떤 애플리케이션이든 실행할 수 있습니다. Amazon ECS를 통해 인프라의 복잡성을 모두 생략함으로써 컨테이너식 애플리케이션을 설계, 구축 및 실행하는데 집중할 수 있습니다.

또한, Docker 컨테이너 생성 및 종료부터 자세한 클러스터 상태 정보 보기에 이르기까지 클러스터에 대한 완벽한 가시성을 가지고 제어할 수 있습니다. 자체 스케줄러를 손쉽게 통합하여 사용하거나 EC2 Container Service를 기존 소프트웨어 전송 프로세스(예: 지속적인 통합 및 전송 시스템)에 연결할 수 있습니다.

Amazon EC2 Container Service

시작하기

Amazon Web Services에 가입하면 AWS 프리 티어에 12개월 동안 액세스할 수 있습니다. 연중무휴 24시간 고객 서비스, 지원 포럼 등을 비롯한 AWS Basic Support 기능을 사용해 보십시오.

AmazonEC2ContainerService_ProductDetail

Amazon EC2 Container Service는 Docker를 지원하므로, Amazon EC2 인스턴스 클러스터에서 Docker 컨테이너를 실행하고 관리할 수 있습니다. Amazon ECS가 관리하는 클러스터의 각 EC2 인스턴스가 Docker 데몬을 실행하므로, 로컬에서 컨테이너로 패키징하는 모든 애플리케이션을 구성 변경 필요 없이 Amazon ECS에서 배포하고 실행할 수 있습니다.

자체 컨테이너 관리 인프라를 관리하는 작업에는 자체 클러스터 관리 소프트웨어, 구성 관리 시스템 및 모니터링 솔루션을 설치하고, 운영하고, 조정하는 것이 포함됩니다. 이러한 시스템의 가용성 및 확장성을 설계하고 관리하는 일은 쉽지 않습니다. Amazon EC2 Container Service는 복잡한 컨테이너 관리가 필요 없습니다. Amazon ECS를 사용하면, 컨테이너 인스턴스의 클러스터를 시작하고 실행할 작업을 지정하기만 하면 됩니다. 모든 클러스터 관리는 Amazon ECS에서 대신 처리합니다.

Amazon EC2 Container Service를 사용하면 작업 정의라 부르는 선언형 JSON 템플릿을 통해 작업을 정의할 수 있습니다. Docker 리포지토리 및 이미지, 메모리 및 CPU 요구 사항, 공유 데이터 볼륨, 컨테이너가 서로 연결된 방식 등 작업에 필요한 하나 이상의 컨테이너를 작업 정의 내에서 지정할 수 있습니다. 서비스에 등록할 수 있는 단일 작업 정의 파일에서 원하는 만큼의 작업을 실행할 수 있습니다. 작업 정의 파일을 사용하면 애플리케이션 사양의 버전을 관리할 수도 있습니다.

Amazon EC2 Container Service는 간단한 API 세트를 제공하여 서비스를 통합하고 확장할 수 있도록 해줍니다. API를 사용하면 클러스터를 생성 및 삭제하고, 작업을 등록 및 등록 취소하며, Docker 컨테이너를 실행 및 종료하고, 클러스터와 해당 인스턴스의 상태에 대한 자세한 정보를 제공할 수 있습니다. 또한, AWS CloudFormation을 사용하여 Amazon ECS 클러스터를 프로비저닝하고, 작업 정의를 등록하고, 컨테이너 일정을 수립할 수 있습니다.

Amazon EC2 Container Service는 리소스 필요(예: CPU 또는 RAM)와 가용성 요구 사항에 따라 전체 클러스터에 컨테이너를 배치하는 스케줄러를 포함합니다. 사용 가능한 스케줄러를 통해, 배치 작업뿐 아니라 장기 실행 애플리케이션과 서비스의 일정을 설정할 수 있습니다. 또한, Amazon ECS API는 클러스터의 전체 상태 정보를 제공하여, 자체 스케줄러를 작성하거나 기존 타사 스케줄러(예: Marathon)를 통합할 수 있습니다. Amazon ECS는 모든 스케줄러에 클러스터의 전체 상태를 제공하는 공유 상태의 낙관적 동시성 시스템입니다. 컨테이너 관리 및 오케스트레이션용 오픈 소스 프로젝트 모음인 Amazon ECS API 또는 Blox를 사용하여 타사 스케줄러를 통합하거나 자체 스케줄러를 개발할 수 있습니다. 자세한 내용은 Blox GitHub 페이지를 참조하십시오.

컨테이너 자동 복구
Amazon ECS 서비스 스케줄러는 비정상 컨테이너를 자동으로 복구하여 원하는 수의 컨테이너가 애플리케이션을 지원하도록 해줍니다.

컨테이너 배포
Amazon ECS를 사용하면 컨테이너를 새로운 버전으로 쉽게 업데이트할 수 있습니다. 새로운 버전의 애플리케이션 작업 정의를 업로드하면, Amazon ECS 스케줄러가 자동으로 업데이트된 이미지를 사용하는 새로운 컨테이너를 시작하고 이전 버전을 실행하는 컨테이너를 중지합니다. Amazon ECS가 연결된 ELB에서 컨테이너를 자동으로 등록하거나 등록 해제합니다.

Amazon ECS는 Elastic Load Balancing(ELB)과 통합되어 컨테이너 전체에 트래픽을 배분할 수 있게 해줍니다. 사용할 작업 정의와 ELB를 지정하면 Amazon ECS 서비스 스케줄러가 ELB에서 컨테이너를 자동으로 추가 및 제거합니다. 작업 정의에서 동적 포트를 지정하여 컨테이너가 EC2 인스턴스에 예약된 경우 컨테이너에 미사용 포트를 제공할 수 있습니다. 또한, 경로 기반 라우팅을 사용하여 여러 서버에서 ELB를 공유할 수 있습니다.

Amazon EC2 Container Service CLI(ECS CLI)를 사용하면 로컬 개발 환경을 간소화할 뿐 아니라 Amazon ECS 클러스터 및 이와 관련된 인스턴스(예: EC2 인스턴스)도 손쉽게 설정할 수 있습니다. Amazon ECS CLI는 멀티 컨테이너 애플리케이션을 정의 및 실행하기 위한 오픈 소스 도구인 Docker Compose를 지원합니다. 멀티 컨테이너 애플리케이션을 정의하는 데 사용한 것과 동일한 Compose 정의를 개발 머신뿐 아니라 프로덕션에도 적용할 수 있습니다. Amazon ECS CLI는 오픈 소스이며, 여기에서 다운로드할 수 있습니다.

Amazon ECS를 사용하면 컨테이너 및 클러스터를 모니터링할 수 있습니다. Amazon CloudWatch를 통해 실행 중인 작업의 평균 및 전체 CPU 사용률과 메모리 사용률을 작업 정의, 서비스 또는 클러스터별로 그룹화하여 모니터링할 수 있습니다. 또한, CloudWatch 경보를 설정하여 컨테이너 또는 클러스터를 확장하거나 축소해야 할 때 알림을 받을 수 있습니다.

각 컨테이너 인스턴스의 ECS 에이전트 로그와 Docker 컨테이너 로그를 Amazon CloudWatch 로그로 전송하여 문제를 쉽게 진단할 수 있습니다. 또한 모든 Amazon ECS API 호출을 기록할 수 있으며 AWS CloudTrail을 통해 로그 파일을 전송받을 수 있습니다. API 호출자 ID, API 호출 시간, API 호출자의 소스 IP 주소, 요청 파라미터 및 Amazon ECS가 반환한 응답 요소와 같은 정보가 기록됩니다. CloudTrail은 Amazon ECS Management Console, AWS SDK 및 AWS CLI에서 요청한 API 호출 이력을 제공하며 보안 분석, 리소스 변경 추적 및 규정 준수 감사를 지원합니다.

Amazon EC2 Container Service를 타사 또는 액세스 가능한 프라이빗 Docker 레지스트리, Docker Hub, 호스팅된 Docker 이미지 리포지토리에서 사용할 수 있습니다. 작업 정의에 리포지토리를 지정하기만 하면 Amazon ECS에서 애플리케이션에 적합한 이미지를 가져옵니다.

Amazon EC2 Container Service는 각 ECS 작업마다 IAM 역할을 지정할 수 있는 서비스입니다. ECS 컨테이너 인스턴스는 이 서비스를 통해 역할을 최소화함으로써 '최소 권한' 액세스 정책을 준수할 뿐만 아니라 사용자는 인스턴스 역할과 작업 역할을 따로 관리할 수 있습니다. 또한 CloudTrail 로그를 조회하여 어떤 작업이 어떤 역할을 사용하고 있는지 알 수 있는 가시성이 확보됩니다.