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 로드 밸런싱