AWS ECS(Elastic Container Service)는 AWS에서 제공하는 완전 관리형 컨테이너 오케스트레이션 서비스입니다. Docker 컨테이너를 쉽게 배포하고 운영할 수 있도록 해주며, Kubernetes의 복잡성 없이 컨테이너 관리가 가능합니다.
💡 컨테이너 오케스트레이션이란?
여러 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화하는 프로세스입니다. 컨테이너의 생명주기를 관리하고 장애 발생 시 자동으로 복구하며, 트래픽에 따라 자동으로 확장/축소하는 등의 작업을 수행합니다.
ECS란 무엇인가?
AWS 공식 문서에 따르면:
"Amazon Elastic Container Service(Amazon ECS)는 확장성이 뛰어나고 빠른 컨테이너 관리 서비스입니다. 이를 사용하여 클러스터에서 컨테이너를 실행, 중지 및 관리할 수 있습니다."
간단히 말해, ECS는 Docker 컨테이너를 관리하기 위한 도구입니다. 유명한 오케스트레이션 도구인 Kubernetes와 비슷하지만 AWS에 최적화되어 있고 더 간단하게 사용할 수 있습니다.

ECS의 핵심 구성 요소
ECS는 다음 5가지 주요 요소로 구성됩니다.
1. Cluster (클러스터)
클러스터는 ECS의 가장 기본적인 논리적 그룹 단위입니다.
- Task 또는 Service를 실행하는 컨테이너 인스턴스들의 집합
- 컴퓨터 클러스터처럼 "여러 대의 컴퓨터가 연결되어 하나의 시스템처럼 동작하는 집합"
- 기본적으로 빈 클러스터도 생성 가능 (컴퓨팅 자원을 포함하지 않음)
- Task를 배포하기 위한 인스턴스의 논리적 집합
- Cluster는 Container Instance를 관리하고 제어할 수 있는 권한 보유
- AWS Fargate를 사용하면 Container Instance 없이도 컨테이너 실행 가능
역할:
- Task나 Service를 실행하면 조건에 맞는 Container Instance를 자동으로 찾아 컨테이너 배포
- 리소스 관리 및 모니터링의 기준점
2. Task Definition (태스크 정의)
컨테이너를 실행하기 위한 설정이 저장된 청사진입니다.
- Docker 이미지, CPU, 메모리, 네트워킹 모드, 포트 매핑 등을 지정
- 하나 또는 여러 개의 컨테이너 정의를 포함 가능
- Cluster에 종속되지 않아 여러 Cluster에서 재사용 가능
- 버전 관리가 가능하여 쉽게 롤백 가능
- docker run 명령어와 유사한 역할
특징:
- JSON 형식으로 정의
- 환경 변수, 볼륨 마운트, 로깅 설정 등 포함
- 업데이트 시 새로운 리비전이 생성됨
3. Task (태스크)
ECS의 최소 실행 단위로, 실제로 실행되는 컨테이너 묶음입니다.
- Task Definition에 정의된 내용을 기반으로 배포된 컨테이너 집합
- 하나의 Task에 하나 또는 여러 개의 컨테이너 포함 가능
- Kubernetes의 Pod와 유사한 개념
- Cluster에 속한 Container Instance에 배포됨
실행 방법 두 가지:
- 직접 실행 (Standalone Task)
- Task Definition으로 직접 Task를 실행
- 일회성으로 실행되며 관리되지 않음
- 배치 작업이나 한 번만 실행하는 작업에 적합
- Service를 통한 실행
- Service가 지속적으로 Task를 관리
- 지정된 개수만큼 항상 실행 상태 유지
- 장애 발생 시 자동으로 재시작
4. Service (서비스)
Task를 지속적으로 관리하는 상위 개념입니다.
- Task의 상위에 있는 관리 레이어
- 지정된 수의 Task를 항상 실행 상태로 유지
- Kubernetes의 Deployment + ReplicaSet과 유사
주요 기능:
- Task 개수 유지: 원하는 Task 수를 설정하면 자동으로 유지
- 로드 밸런싱: ELB와 연동하여 트래픽 분산
- Auto Scaling: 트래픽에 따라 Task 개수 자동 조절
- 자동 복구: Task에 문제가 발생하면 자동으로 새로운 Task 생성
- 무중단 배포: 블루-그린 배포, 롤링 업데이트 지원
Service가 하는 일:
- Cluster에 몇 개의 Task를 배포할지 결정
- 실행 중인 Task를 자동으로 ELB에 등록/제거
- 외부에서 접근 가능하도록 로드 밸런서와 연동
5. Container Instance (컨테이너 인스턴스)
실제로 Docker 컨테이너가 실행되는 EC2 인스턴스입니다.
- ECS를 통해 Task가 배포되는 EC2 인스턴스
- Kubernetes의 Worker Node와 유사
- ECS Container Agent가 설치되어 Cluster에 등록됨
- 하나의 Cluster에 여러 개의 Container Instance 존재 가능
- 하나의 Container Instance 안에서도 여러 개의 Task 실행 가능
ECS Container Agent 역할:
- EC2 Instance를 Cluster에 연결
- Task의 시작과 중지 관리
- 리소스 사용량 모니터링
- ECS 컨트롤 플레인과 통신
ECS 아키텍처 구조

구조 설명:
- 하나의 Cluster에 여러 Service 실행 가능
- 하나의 Service는 여러 Task 관리
- Task는 Container Instance에 배포됨
- Service는 서로 다른 Task Definition을 가질 수 있음
ECS의 두 가지 실행 모드 (Launch Type)
1. EC2 Launch Type
사용자가 직접 EC2 인스턴스를 관리하는 방식
특징:
- IaaS(Infrastructure as a Service) 방식
- Container Instance(EC2)를 직접 프로비저닝
- 인스턴스 유형, 크기, AMI를 직접 선택
- 더 세밀한 제어가 가능
- OS 패치, 보안 그룹, 네트워킹 직접 관리
장점:
- 비용 효율적: 장기 실행 워크로드에서 Reserved Instance 활용 가능
- 유연성: 특수한 하드웨어 요구사항 충족 가능
- 커스터마이징: 호스트 레벨 설정 가능
단점:
- 관리 부담: 서버 프로비저닝, OS 업데이트, 스케일링 직접 관리
- 복잡성: 클러스터 관리에 시간 투자 필요
적합한 경우:
- 예측 가능한 장기 실행 워크로드
- 특수한 하드웨어 요구사항 (GPU, 고성능 네트워킹 등)
- 비용 최적화가 중요한 경우
2. AWS Fargate
서버리스 컨테이너 실행 환경
특징:
- PaaS(Platform as a Service) 방식
- 서버 관리 완전히 불필요
- CPU와 메모리만 지정하면 AWS가 모든 인프라 관리
- 사용한 리소스만큼만 초 단위로 과금
- 운영 체제, 패치, 스케일링 등 AWS가 자동 처리
장점:
- 운영 간소화: 서버 관리 완전 제거
- 빠른 시작: 몇 분 만에 배포 가능
- 자동 스케일링: 필요에 따라 자동으로 확장/축소
- 보안: 각 Task가 격리된 환경에서 실행
단점:
- 비용: EC2 대비 시간당 비용이 높음
- 제한사항: 특수한 하드웨어 요구사항 충족 어려움
- 제어 제한: 호스트 레벨 접근 불가
적합한 경우:
- 가변적인 워크로드
- 빠른 배포와 간편한 운영 원할 때
- 인프라 관리에 시간 쓰고 싶지 않을 때
비용 비교 예시
시나리오: 10 vCPU, 20GB 메모리 지속 실행
방식 시간당 비용 (대략) 월 비용 (730시간)
| Fargate On-Demand | $0.50-0.60 | $365-438 |
| EC2 On-Demand (t3.xlarge) | $0.30-0.40 | $219-292 |
| EC2 Reserved Instance (1년) | $0.15-0.25 | $110-183 |
| Fargate Spot | $0.15-0.18 | $110-131 |
- 장기 안정적 워크로드: EC2 Reserved Instance가 가장 경제적
- 가변 워크로드: Fargate가 운영 효율성 측면에서 유리
- 비용과 간편함의 균형: Fargate Spot 활용
2024년 최신 ECS/Fargate 업데이트
1. EBS 볼륨 통합 (2024년 1월)
Fargate와 ECS가 Amazon EBS와 통합되어 스토리지 집약적 애플리케이션(ETL 작업, 미디어 트랜스코딩, ML 추론 워크로드)을 서버리스 컨테이너로 쉽게 배포할 수 있게 되었습니다.
주요 기능:
- Task에 EBS 볼륨을 직접 연결 가능
- 볼륨 크기, 타입, IOPS, 처리량 구성 가능
- 스냅샷에서 볼륨 초기화 지원
- Task 종료 시 자동으로 볼륨 삭제
2. Graviton 기반 Spot 컴퓨팅 (2024년 9월)
ECS가 Fargate Spot에서 AWS Graviton 기반 컴퓨팅을 지원하여, Arm 기반 애플리케이션을 Fargate 가격 대비 최대 70% 할인된 가격으로 실행할 수 있게 되었습니다.
특징:
- AWS Graviton: AWS가 직접 설계한 Arm 기반 프로세서
- 가격 대비 성능이 뛰어남
- Fault-tolerant 워크로드에 적합
- Task Definition에서 cpu-architecture = ARM64 설정
3. GPU 지원 프리뷰 (2024년 re:Invent)
AWS는 re:Invent 2024에서 Fargate의 GPU 지원을 프리뷰로 발표했으며, 이는 ML 추론, 비디오 처리 등 GPU 기반 애플리케이션의 Fargate 배포를 가능하게 합니다.
영향:
- 기존에는 GPU 워크로드에 EC2 인스턴스 필요
- Fargate로 GPU 워크로드도 서버리스로 실행 가능
- ML 추론 및 비디오 처리 워크로드 간소화
4. 네트워크 장애 주입 실험 (2024년 12월)
ECS는 Fargate에서 네트워크 장애 주입 실험을 지원하기 시작했습니다. AWS FIS(Fault Injection Service)를 통해 네트워크 지연, 블랙홀, 패킷 손실, CPU 스트레스, I/O 스트레스, 프로세스 종료 등 6가지 작업을 테스트할 수 있습니다.
활용:
- 애플리케이션 복원력 테스트
- 장애 시나리오 시뮬레이션
- 모니터링 및 알람 설정 검증
- 규제 준수 요구사항 충족
5. 이벤트 기반 아키텍처 강화 (2024년 re:Invent)
ECS와 Fargate를 활용한 이벤트 기반 아키텍처 패턴이 강화되었으며, EventBridge 및 Step Functions의 프라이빗 API 통합으로 보안 네트워크 내에서도 이벤트 기반 워크플로우 구현이 가능해졌습니다.
ECS vs EKS: 무엇을 선택할 것인가?
AWS에는 컨테이너 관리 서비스로 ECS와 EKS 두 가지가 있습니다.
ECS (Elastic Container Service)
- Docker 기반 컨테이너 오케스트레이션
- AWS 네이티브 서비스
- AWS 리소스와 긴밀한 통합
장점:
- 학습 곡선이 낮음
- AWS 콘솔에서 직관적인 관리
- Fargate로 완전한 서버리스 가능
- 설정이 간단하고 빠르게 시작 가능
- AWS 서비스(ELB, CloudWatch, IAM)와 자연스러운 통합
단점:
- AWS에 종속적 (벤더 락인)
- Kubernetes만큼 유연하지 않음
- 멀티 클라우드 전략에 제한적
EKS (Elastic Kubernetes Service)
- Kubernetes 기반 컨테이너 오케스트레이션
- CNCF 표준 준수
- Kubernetes 생태계 활용
장점:
- 강력한 오케스트레이션 기능
- 거대한 Kubernetes 생태계와 커뮤니티
- 멀티 클라우드 및 하이브리드 클라우드 지원
- 복잡한 워크로드 관리에 적합
- 표준화된 API와 도구
단점:
- 학습 곡선이 가파름
- 설정과 운영이 복잡
- 비용이 더 높음 (컨트롤 플레인 시간당 $0.10)
- 초기 설정에 시간 소요
선택 가이드
상황 권장 서비스
| AWS 중심 인프라 | ECS |
| 빠른 시작과 간단한 배포 | ECS |
| Kubernetes 경험 없음 | ECS |
| 서버리스 우선 | ECS + Fargate |
| 멀티 클라우드 전략 | EKS |
| 기존 Kubernetes 워크로드 | EKS |
| 복잡한 마이크로서비스 | EKS |
| Kubernetes 표준 도구 필요 | EKS |
ECS 모범 사례
1. Task Definition 설계
- 리소스 제한 명확히 설정: CPU와 메모리를 적절하게 할당
- 헬스 체크 구성: 컨테이너가 정상적으로 실행되는지 확인
- 로깅 활성화: CloudWatch Logs 통합
- 환경 변수 활용: 하드코딩 대신 환경 변수 사용
2. 보안
- 최소 권한 원칙: Task Role과 Execution Role 분리
- Secrets Manager 활용: 민감한 정보는 환경 변수가 아닌 Secrets Manager 사용
- 비-루트 사용자: 컨테이너를 루트가 아닌 사용자로 실행
- 이미지 스캔: ECR의 자동 이미지 스캔 활성화
3. 네트워킹
- VPC 설계: Private Subnet에 Task 배포
- Security Group: 필요한 포트만 열기
- Service Discovery: AWS Cloud Map 활용하여 서비스 검색
4. 모니터링 및 로깅
- CloudWatch Container Insights: 컨테이너 레벨 메트릭 수집
- 중앙 집중식 로깅: CloudWatch Logs Insights 활용
- 알람 설정: CPU, 메모리, 에러율 모니터링
- X-Ray 통합: 분산 트레이싱으로 성능 분석
5. 비용 최적화
- Fargate Spot: 가격에 민감하지 않은 워크로드는 Spot 사용
- Compute Savings Plans: 장기 워크로드는 할인 플랜 활용
- Auto Scaling: 트래픽에 따라 자동 확장/축소
- 리소스 우right-sizing: 실제 사용량 기반으로 리소스 조정
마치며
ECS는 Docker 컨테이너를 쉽고 효율적으로 관리할 수 있는 강력한 서비스입니다. 특히 Fargate와 결합하면 인프라 관리 부담 없이 애플리케이션 개발에만 집중할 수 있습니다.
ECS를 선택해야 하는 경우
- AWS 중심의 인프라를 사용하는 경우
- 빠르고 간단하게 컨테이너를 배포하고 싶은 경우
- Kubernetes의 복잡성을 피하고 싶은 경우
- 서버리스 컨테이너 실행을 원하는 경우
https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/Welcome.html
Amazon Elastic Container Service란 무엇입니까? - Amazon Elastic Container Service
Amazon Elastic Container Service란 무엇입니까? Amazon Elastic Container Service(Amazon ECS)는 컨테이너 애플리케이션을 쉽게 배포, 관리 및 확대할 수 있도록 도와주는 완전 관리형 컨테이너 오케스트레이션 서
docs.aws.amazon.com
https://www.elancer.co.kr/blog/detail/840
AWS ECS vs EKS의 차이, DevOps 엔지니어가 알려드립니다. I 이랜서 블로그
빠른 개발과 배포가 중요한 DevOps 환경, 그리고 안정적이고 효율적인 서비스 운영을 위해 많은 기업들이 컨테이너 기반 아키텍처인 ECS와 EKS를 활용해 차별화된 서비스를 구축하고 있습니다. AWS
www.elancer.co.kr
https://itguny04.tistory.com/62
[AWS] ECS(Elastic Container Serivce)란?
Elastic Container Service Elastic Container Service(이하 ECS)란? ‘Amazon Elastic Container Service(Amazon ECS)는 확장성이 뛰어나고 빠른 컨테이너 관리 서비스입니다. 이를 사용하여 클러스터에서 컨테이너를 실행,
itguny04.tistory.com
'개발 지식 > aws' 카테고리의 다른 글
| AWS 인프라를 어떻게 구축할 수 있을까 (2) | 2026.01.16 |
|---|---|
| 엘라스틱 빈스톡(Elastic Beanstalk)이 뭘까 (0) | 2025.12.05 |
| 접근 범위를 제한해서 보안 강화시키기 (0) | 2025.11.27 |
| AWS 서버 구축은 어떻게 해야할까 (1) | 2025.11.13 |