AWS에서는 Docker 기반의 컨테이너를 관리할 수 있는 두 가지 대표 서비스인 ECS(Elastic Container Service) 와 EKS(Elastic Kubernetes Service) 를 제공한다. 두 서비스 모두 컨테이너의 배포, 확장, 관리 기능을 제공하지만 사용하는 방식과 유스케이스는 다르다.
🧱 Docker와 컨테이너 개념

- Docker: 애플리케이션을 컨테이너라는 독립된 환경에 패키징하여 실행하는 플랫폼
- OS와 하드웨어에 독립적으로 실행 가능 (언제 어디서나 예측 가능한 환경)
- Docker 이미지는 Docker Hub, Amazon ECR 등에 저장 가능
AWS와 도커 컨테이너 관리
1. Amazon ECS:
- 도커 관리를 위한 Amazon의 전용 플랫폼입
2. Amazon EKS:
- Kubernetes의 관리형 버전으로 오픈 소스 프로젝트
3. AWS Fargate:
- Amazon의 서버리스 컨테이너 플랫폼으로 ECS와 EKS 둘 다 함께 작동
4. Amazon ECR:
🔹 Amazon ECS (Elastic Container Service)
✅ 특징
- AWS가 자체 개발한 완전 관리형 컨테이너 오케스트레이션 서비스
- Docker 컨테이너 실행에 최적화
- EC2 또는 Fargate 모드로 실행 가능
🛠️ 실행 모드
- EC2 모드: 인프라를 직접 프로비저닝하고 EC2 인스턴스에서 컨테이너 실행
- Fargate 모드: 서버리스. 인프라 관리 필요 없음. 태스크 정의만으로 실행 가능
🔁 오토스케일링
- ECS 서비스 오토 스케일링(Task 단위)
- CloudWatch 지표(CPU, 메모리, ALB 요청 수)에 따라 확장/축소
📦 볼륨 마운트
- EFS 파일 시스템을 마운트하여 태스크 간 데이터 공유 가능
⚙️ IAM 역할
- EC2 인스턴스 역할, 태스크 역할을 분리하여 보안과 권한 제어 가능
🔗 통합
- EventBridge: 이벤트 기반으로 ECS 태스크 자동 실행 가능
- SQS: 대기열에 따라 태스크 자동 확장
🔷 Amazon EKS (Elastic Kubernetes Service)
✅ 특징
- Kubernetes 오픈소스 플랫폼을 AWS에서 관리형으로 제공
- 컨테이너를 Kubernetes 방식으로 배포, 관리
🛠️ 실행 모드
- EC2 모드: 워커 노드를 EC2로 직접 관리
- Fargate 모드: 서버리스로 컨테이너 실행
🧱 노드 유형
- Managed Node Group: AWS가 EC2 인스턴스 자동 관리
- Self-managed Node: 사용자가 직접 EC2 관리 및 등록
- Fargate: 인프라 전혀 신경 쓸 필요 없음 (서버리스)
💾 스토리지 지원
- EBS, EFS, FSx 등 다양한 Kubernetes CSI(Storage Interface) 드라이버 지원
🌐 유스케이스
- 온프레미스 Kubernetes와의 하이브리드 운영
- 쿠버네티스를 이미 사용하는 기업에 적합
🆚 ECS vs EKS 비교 요약

| 항목 | ECS | EKS |
|---|
| 관리 주체 | AWS 전용 | 오픈소스 Kubernetes 기반 |
| 오케스트레이션 | AWS ECS 자체 엔진 | Kubernetes 엔진 |
| 실행 모드 | EC2, Fargate | EC2, Fargate |
| 러닝 커브 | 낮음 (간단함) | 높음 (Kubernetes 이해 필요) |
| 사용 유스케이스 | AWS 내 빠른 배포, 간단한 컨테이너 | 멀티 클라우드, 쿠버네티스 연동 필요 시 |
| 확장성 | ECS 오토스케일링 | K8s Horizontal Pod Autoscaler |
📦 Amazon ECR (Elastic Container Registry)
- Docker 이미지 저장소로, ECS와 EKS 모두에서 사용 가능
- IAM을 통한 세밀한 권한 제어
- 이미지 스캐닝 및 라이프사이클 정책 지원
🧾 마무리 요약
- ECS는 간편하고 빠르게 컨테이너를 배포하고 싶은 AWS 중심 유저에게 적합
- EKS는 Kubernetes에 익숙하고 멀티 클라우드 전략이 필요한 경우에 적합
- 둘 다 Fargate와 통합하여 서버리스 환경을 구축할 수 있음