1 Service
- 태스크 정의가 완료되면, 이를 기반으로 서비스(Service)를 생성합니다.
- ECS 서비스는 정의된 태스크를 실행하고, 애플리케이션의 가용성을 관리합니다.
- 서비스를 사용하면 지정된 수의 태스크 인스턴스가 항상 실행되도록 할 수 있으며, 애플리케이션을 업데이트하거나 확장할 때 태스크를 자동으로 시작하거나 종료할 수 있습니다.
1.1 태스크, 태스크 인스턴스, 서비스의 관계
- 태스크 정의 (Task Definition):
- 애플리케이션을 구성하는 컨테이너들의 청사진입니다.
- 컨테이너 이미지, 리소스 요구사항, 네트워크 설정 등을 정의합니다.
- [[TaskDefinitions]] 참고
- 태스크 인스턴스 (Task Instance):
- 태스크 정의를 기반으로 실제로 실행되는 컨테이너 집합입니다.
- 하나의 태스크 정의로 여러 개의 태스크 인스턴스를 실행할 수 있습니다.
- 서비스 (Service):
- 지정된 수의 태스크 인스턴스를 유지하고 관리합니다.
- 태스크 인스턴스가 실패하면 자동으로 새로운 인스턴스를 시작합니다.
- 로드 밸런서와 연동하여 트래픽을 분산시킬 수 있습니다.
2 환경 설정
2.1 런치 타입
- 런치 타입: 서비스가 EC2 또는 Fargate 런치 타입 중 어떤 방식으로 실행될지를 지정합니다.
- EC2: 직접 관리하는 인프라에서 서비스를 실행합니다.
- Fargate: 서버리스 환경에서 서비스를 실행합니다.
2.2 애플리케이션 타입
- 서비스
- 장기간 실행되는 애플리케이션 컴포넌트를 관리합니다.
- 웹 서버나 데이터베이스와 같은 지속적으로 실행되는 작업에 적합합니다.
- 태스크
- 단기간 실행되는 애플리케이션 컴포넌트를 관리합니다.
- 일회성 작업이나 배치 작업에 적합합니다.
2.3 태스크 정의(Task Definition)
- 태스크 정의: 서비스에서 사용할 태 스크 정의를 지정합니다. 여기에는 컨테이너 이미지, CPU 및 메모리 할당, 네트워킹 설정, 로깅 구성 등이 포함됩니다.
2.4 서비스 이름
- 서비스 이름: 서비스를 식별할 수 있는 이름을 지정합니다.
2.5 Desired Tasks
- Desired Tasks: 항상 실행되어야 하는 태스크 인스턴스의 수를 지정합니다. 이 수에 따라 ECS는 필요한 만큼의 태스크 인스턴스를 실행 및 유지 관리합니다.
2.6 네트워크 설정
- 서브넷: 서비스가 실행될 서브넷을 지정합니다.
- 보안 그룹: 서비스에 적용할 보안 그룹을 지정하여 네트워크 트래픽을 제어합니다.
2.7 로드 밸런싱
- 로드 밸런서: 서비스의 트래픽을 분산시키기 위한 로드 밸런서를 구성합니다.
- Application Load Balancer: HTTP/HTTPS 트래픽을 처리하고 레이어 7 라우팅 기능을 제공합니다.
- Network Load Balancer: 초당 수백만 요청을 처리할 수 있는 고성능의 레이어 4 로드 밸런서를 제공합니다.
- 타겟 그룹(Target Group): 로드 밸런서가 트래픽을 분산시킬 대상 그룹을 정의합니다.
- 설정: 타겟 그룹에 포함될 EC2 인스턴스, IP 주소, 또는 Lambda 함수를 지정합니다.
- 포트 및 프로토콜: 타겟 그룹이 수신할 포트 및 프로토콜을 정의합니다.
- 타겟 등록: 태스크 또는 서비스의 컨테이너를 타겟으로 등록하여 로드 밸런서가 트래픽을 해당 타겟으로 라우팅할 수 있도록 합니다.
- 헬스 체크(Health Check): 로드 밸런서가 타겟 그룹의 상태를 확인하여 트래픽을 정상적인 타겟으로만 라우팅하도록 합니다.
- 헬스 체크 설정: 헬스 체크 경로, 간격, 타임아웃, 재시도 횟수 등을 설정합니다.
- 헬스 체크 타입: HTTP, HTTPS, TCP 등의 헬스 체크 타입을 지정합니다.
- 헬스 체크 동작: 지정된 헬스 체크 경로를 통해 타겟의 상태를 주기적으로 확인합니다. 헬스 체크에 실패한 타겟은 비정상 상태로 표시되고, 로드 밸런서는 해당 타겟으로 트래픽을 보내지 않습니다.
2.8 서비스 오토 스케일링
2.8.1 Auto Scaling 정책