ECS란?
ecs 는 aws에서 제공하는 완전관리형 컨테이너 오케스트레이션 서비스임.
컨테이너 오케스트레이션 서비스 : 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화해주는 유형
ECS의 구성
- cluster
- service
- Task Definition
- Task
- Container Instance
로 이루어져있다.
Cluster
- ECS의 가장 기본적인 단위. Task 또는 Service의 논리적인 그룹임.
- 기본적으로 컴퓨팅 자원을 포함하지 않으며 ECS에서 컨테이너를 실행시키기 위해선 Container Instance가 Cluster에 포함되어야함.
- Cluster는 Container Insatnace를 조작할 수 있는 권한을 가지고 있으며, Cluster에서 Service나 Task를 실행하면 조건을 만족하는 Container Instance를 찾아 해당 Instance에 컨테이너를 실행함.
- AWS Fargate(serverless)를 사용하면 Container Instance없이 컨테이너를 실행할 수 있음.
Service
- Task 를 지속적으로 관리하는 단위.
- service는 cluster 내에서 지정된 Task 수만큼 동시에 실행하고 관리할 수 있음.
- 또한 ELB와 연동하여 실행중인 Task를 찾아 자동으로 ELB에 등록 및 제거하는 Auto Scaling 역할도 담당함.
Task Definition
- Task Definition은 Task를 실행하기 위한 설정을 저장하고 있는 단위임.
- Task Definition은 컨테이너 별로 실행하고자 하는 이미지를 지정할 수 있으며, CPU나, Memory와 같은 정보도 지정할 수 있고, 하나 혹은 둘 이상의 Task Definition을 포함할 수 있음.
- Task Definition은 Cluster에 종속되어있지 않음.
Task
- Task는 ecs의 최소 실행 단위로 하나 이상의 컨테이너 묶음임.
- Task를 실행하는 방법에는 Taskdefinition으로 직접 Task를 실행하는 방법과 service를 정의하는 방법이 있음. Task definition으로 직접 실행된 Task의 경우 처음 한 번 실행된 이후 관리되지 않음.
Container Instance
- Task가 배포되는 Cluster에 등록된 EC2 Instance임.
- ecs 는 Ec2 인스턴스에 Ecs container agent 를 설치하고 Cluster에 container instance로 등록할 수 있음.
- 하나의 cluster에 여러 개의 Container instance가 있을 수 있으며, 하나의 container instance 안에도 여러개의 taska가 있을 수 있음.
ecs 클러스터 안에 Ecs container instance 가 있고, 그 안에 service, 그 안에 Task 그리고 그 안에 Docker container 가 있다고 볼 수 있다.
마치며
ECS의 기본적인 내용들을 알아봤으니 실습을 진행해보자. private ecs - alb 로 진행을 하기전에 우선 퍼블릭에 Ecs 를 띄워 기본적인 요소들을 실습을 해볼 예정이다.