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와 연동하여 설정한다.
배포 시 주의사항
- 헬스 체크 시간: 새 작업이 준비되는 데 걸리는 시간 고려
- 오토 스케일링 테스트: 부하 테스트로 스케일링 동작 확인
- 비용 모니터링: 최대 백분율 설정으로 인한 비용 증가 주의
- 로그 확인: CloudWatch에서 배포 실패 원인 파악
실전 팁
- 처음에는 최소/최대 백분율을 작게 설정해 배포 테스트
- 스케일링 정책은 단계적으로 복잡성을 증가
- 항상 드라이 런(dry-run)으로 먼저 테스트
마치며
AWS ECS Fargate는 서버 관리의 부담을 크게 줄이면서도 강력한 컨테이너 오케스트레이션을 제공합니다. 초기 설정이 복잡해 보일 수 있지만, 한 번 구성하면 이후 배포와 스케일링은 매우 간단해집니다.
특히 마이크로서비스 아키텍처나 변동성이 큰 트래픽을 처리하는 애플리케이션의 경우, Fargate의 자동 스케일링과 무중단 배포는 운영 효율을 크게 향상시킵니다. 위의 설정 방법을 따르면 프로덕션 환경에서도 안정적으로 애플리케이션을 운영할 수 있습니다.
댓글