[AWS] ECS란?

growing·2025년 6월 4일

AWS

목록 보기
2/10
post-thumbnail

AWS가 관리하는 컨테이너 오케스트레이션 서비스
EC2 인스턴스들을 하나의 클러스터로 묶어서 컨테이너를 일관성 있게 관리하며, Task Definition으로 컨테이너 실행 방식을 정의하고 Service로 지속적인 작업을 관리


ECS 구성 요소

Cluster

컨테이너가 실행되는 논리적 그룹. 여러 EC2 인스턴스나 Fargate 리소스를 하나로 묶어서 관리하는 단위. 클러스터 내에서 Task들이 배포되고 실행됨

Task Definition

컨테이너 실행을 위한 설정 템플릿. Docker 이미지, CPU/메모리 할당량, 포트 매핑, 환경 변수 등을 정의. Task Definition은 버전 관리되며, 업데이트 시 새로운 리비전이 생성됨

주요 설정 항목

  • 컨테이너 이미지 (ECR URI)
  • CPU 및 메모리 할당
  • 포트 매핑 (컨테이너 포트 → 호스트 포트)
  • 환경 변수 및 Secrets
  • 로그 설정

Service

Task를 지속적으로 실행하고 관리하는 단위. 원하는 Task 개수를 유지하고, 로드밸런서와 통합하며, 배포 전략(롤링 업데이트)을 제어. Task가 실패하면 자동으로 재시작


실행 타입

EC2 Launch Type

직접 EC2 인스턴스를 관리하며, 해당 인스턴스에서 컨테이너 실행. 클러스터에 EC2를 추가하면 해당 인스턴스의 리소스를 Task가 사용. ECS 자체는 무료이고 EC2 비용만 발생하여 비용 효율적이지만, 인스턴스 관리 필요

Fargate

AWS가 인프라를 완전히 관리하는 서버리스 방식. EC2를 직접 관리할 필요 없이 Task만 정의하면 자동으로 실행. 편리하지만 EC2보다 비용이 높음


로드밸런서 통합

ALB와 ECS Service 연결

ECS Service 생성 시 Application Load Balancer를 함께 구성하면, 로드밸런서가 여러 Task에 트래픽을 자동 분산. Service는 Task의 헬스 체크를 수행하고, 비정상 Task는 종료 후 재생성

동작

사용자 
  → ALB DNS (example-lb-123456789.ap-northeast-2.elb.amazonaws.com)
  → Target Group
  → ECS Task (동적 포트 매핑)
  → 컨테이너

로드밸런서 접속

  • 로드밸런서는 DNS 주소로 접근
  • EC2 인스턴스 IP로 직접 접근하지 않음
  • DNS는 ALB 생성 시 자동으로 할당됨

ECS 배포

일반적인 배포 프로세스

1. 코드 수정 후 Git Push
   ↓
2. GitHub Actions 워크플로우 실행
   ↓
3. Docker 이미지 빌드
   ↓
4. ECR에 이미지 Push (latest 태그)
   ↓
5. Task Definition 업데이트 (새 리비전 생성)
   ↓
6. ECS Service 업데이트 (Force new deployment)
   ↓
7. 새 Task 시작, 기존 Task 종료 (롤링 업데이트)
   ↓
8. ALB 헬스 체크 통과 후 트래픽 전환

정리

ECS 핵심 구조

  • Cluster: 컨테이너 실행 환경
  • Task Definition: 컨테이너 설정 템플릿
  • Service: Task를 지속적으로 관리

배포 시 주의사항

  • 이미지 태그와 ECR 이미지 일치 확인
  • 포트 매핑은 애플리케이션 리스닝 포트 기준
  • 메모리 설정은 EC2 가용 메모리 고려
  • 로드밸런서 사용 시 동적 포트 매핑 권장
profile
Hello, World!

0개의 댓글