Article

AWS ECS Fargate 컨테이너 오케스트레이션 완벽 가이드

AWS ECS Fargate 완벽 가이드

AWS ECS Fargate는 서버를 관리하지 않고 Docker 컨테이너를 직접 실행할 수 있는 서버리스 컨테이너 서비스다. 이 글에서는 Fargate를 이용한 완전한 애플리케이션 배포 환경을 구축하는 방법을 다룬다.

준비 사항

코드 영역

  • Dockerfile: 컨테이너 이미지 정의
  • buildspec.yaml: CodeBuild 빌드 명령 작성

AWS 영역

  • 클러스터 생성
  • ECR(Elastic Container Registry) 리포지토리 생성
  • 작업 정의(Task Definition) 생성
  • 보안 그룹(Security Group) 생성
  • Application Load Balancer 생성
  • Target Group 생성
  • 서비스 및 작업 생성

핵심 개념: 서비스 vs 작업

개념설명특징
작업(Task)컨테이너 실행 단위1회성, 배치 작업에 적합
서비스(Service)항상 실행되는 작업 그룹지속적 운영, 로드 밸런싱 포함

서비스는 내부적으로 작업을 관리하며, 여러 작업 인스턴스를 조율한다.

서비스 생성 상세 설정

1. 시작 유형

  • Fargate: 서버 관리 불필요 (추천)
  • EC2: 기존 EC2 인스턴스 활용

2. 작업 개수

원하는 작업 개수를 설정한다. 예: 3개

3. 배포 전략: 최소/최대 정상 상태 백분율

예시: 작업 10개, 최소 50%, 최대 200%

최소 정상 상태 백분율 50%

  • 배포 시 5개 작업이 새 버전을 위해 종료 가능
  • 5개는 기존 버전으로 계속 실행
  • 무중단 배포 보장

최대 정상 상태 백분율 200%

  • 배포 시 기존 10개 + 신규 10개 = 20개 임시 실행
  • 신규 버전 10개로 교체 후 기존 10개 종료
  • 무중단 배포, 더 안전한 롤백 가능

네트워크 구성

Load Balancer 설정

  • Application Load Balancer (ALB) 선택
  • 리스너 포트 설정 (예: 80, 443)
  • 대상 그룹 매핑

Target Group

  • 헬스 체크 경로 설정 (예: /health)
  • 헬스 체크 간격 설정
  • 부정 응답 경우 수 설정

오토 스케일링

기본 설정

  • CPU, 메모리, 요청 수 기반 스케일링 쉽게 설정 가능

고급 설정

  • CloudWatch에서 커스텀 메트릭 생성
  • 응답 지연 시간, 에러율 등 여러 지표 조합 가능

예시:

- 평균 CPU 70% 이상 → 작업 추가
- 평균 메모리 80% 이상 → 작업 추가
- 요청당 응답 시간 2초 이상 → 작업 추가

예약된 작업

Cron 표현식을 이용해 정기적인 배치 작업을 실행할 수 있다. CloudWatch Events와 연동하여 설정한다.

배포 시 주의사항

  1. 헬스 체크 시간: 새 작업이 준비되는 데 걸리는 시간 고려
  2. 오토 스케일링 테스트: 부하 테스트로 스케일링 동작 확인
  3. 비용 모니터링: 최대 백분율 설정으로 인한 비용 증가 주의
  4. 로그 확인: CloudWatch에서 배포 실패 원인 파악

실전 팁

  • 처음에는 최소/최대 백분율을 작게 설정해 배포 테스트
  • 스케일링 정책은 단계적으로 복잡성을 증가
  • 항상 드라이 런(dry-run)으로 먼저 테스트

마치며

AWS ECS Fargate는 서버 관리의 부담을 크게 줄이면서도 강력한 컨테이너 오케스트레이션을 제공합니다. 초기 설정이 복잡해 보일 수 있지만, 한 번 구성하면 이후 배포와 스케일링은 매우 간단해집니다.

특히 마이크로서비스 아키텍처나 변동성이 큰 트래픽을 처리하는 애플리케이션의 경우, Fargate의 자동 스케일링과 무중단 배포는 운영 효율을 크게 향상시킵니다. 위의 설정 방법을 따르면 프로덕션 환경에서도 안정적으로 애플리케이션을 운영할 수 있습니다.

댓글