Amazon Elastic Container Service (ECS)는 AWS에서 제공하는 완전관리형 컨테이너 오케스트레이션 서비스. ➡️ 실행, 중지 등 컨테이너 관리 서비스
컨테이너 애플리케이션의 배포, 관리, 확장을 간편하게 해주며, 서버 인프라 관리 부담을 줄여줍니다. 따라서 애플리케이션 개발에 집중할 수 있음.
작업 정의(Task Definition): 컨테이너의 이미지, CPU/메모리 등 실행 설정을 JSON 형식으로 작성한 템플릿입니다. * 배포 타입 설정(Fargate, EC2, External), 컨테이너 이미지 맵핑 정의 작업, 작업 크기 설정
클러스터(Cluster): 컨테이너를 실행하는 리소스(EC2 인스턴스, Fargate 등)를 논리적으로 묶는 단위입니다. 작업이 실행되는 논리적 그룹
작업(Task): 작업 정의를 기반으로 실행된 컨테이너의 실제 인스턴스입니다. ECS 클러스터 내의 최소 실행 단위(1작업당 1~10개 컨테이너 가능)
서비스(Service): 원하는 수의 작업을 컨테이너 인스턴스에 유지하고, 자동 스케일링 및 로드밸런싱 기능을 제공합니다. 작업을 실행, 관리하는 역할. Unhealthy Task 확인 및 교체, 서비스 타입(Replica, Daemon), 배포 유형(롤링 업데이트, 블루/그린 배포)...
EC2 모드: AWS EC2 인스턴스 위에 컨테이너를 실행하는 방식으로, 인프라를 직접 관리합니다.
Fargate 모드: 서버리스 컴퓨팅 엔진을 이용해 인프라 관리 없이 컨테이너를 실행할 수 있습니다.
{
"containerDefinitions": [
{
"name": "app",
"image": "nginx:latest",
"essential": true,
"memory": 512,
"cpu": 256
}
],
"family": "my-task",
"networkMode": "awsvpc",
"requiresCompatibilities": ["FARGATE"],
"cpu": "256",
"memory": "512"
}
AWS 서비스와 완전 통합되어 편리함
높은 확장성 및 자동화 지원
서버 관리 부담 감소 (특히 Fargate 이용 시)
다양한 네트워킹 및 보안 옵션 지원
ECS는 작업 정의(Task Definition)를 기반으로 컨테이너의 배포, 확장, 관리를 자동화하여 개발자가 인프라 대신 애플리케이션에 집중하게 해주는 완전관리형 오케스트레이션 서비스.