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): 로드 밸런서가 타겟 그룹의 상태를 확인하여 트래픽을 정상적인 타겟으로만 라우팅하도록 합니다.
- 헬스 체크 설정: 헬스 체크 경로, 간격, 타임아웃, 재시도 횟수 등을 설정합니다.