ECS는 우리가 흔히 사용하는 컨테이너(ex: Docker)를 관리하기 위한 도구이며, 컨테이너를 쉽게 실행, 중지하는 등의 관리가 가능
ECS에서는 현재 두 가지 플랫폼을 지원한다. 바로 EC2와 Fargate가 있음.
이 둘의 차이점은 사용자가 서버를 직접 관리하는 IAAS와 사용자가 서버를 직접 관리하지 않는 PaaS의 차이.
ECS에는 여러가지 구성요소가 있으며, 'Cluster, Service, Container instance, Task' 등이 있다.
ECS Console은 구성하는 요소는 아님. 하지만 ECS Console에서는 Cluster를 모니터링하고, 제어할 수 있음. 쿠버네티스의 Master Node로 역할.
컴퓨터 클러스터란 ‘여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합’ 을 말한다. 즉 ECS의 클러스터는 Task를 배포하기 위한 인스턴스의 집합.
Task의 상위의 있는 부분이며, Task를 Cluster에 몇 개나 배포할 것인지 결정. 외부의 서비스 하기 위해 로드밸런서를 연동한다. Task가 문제가 생기면 자동으로 새로운 Task를 생성.
이는 쿠버네티스의 배포와 replicaset 등의 기능과 비슷.
ECS를 통해서 Task가 배포되는 EC2 인스턴스를 Container Instance라고 한다. 쿠버네티스의 Worker Node와 비슷. Container Instance에는 ecs-agent가 설치되며 ecs-agent 는 Instance를 Cluster에 묶고, 관리함.(EC2 Type 의 ECS 는 ecs-agent 를 실행하여 ECS 클러스터에 등록해야 함)
Task는 Task definition과 Task 두 가지가 있다.
Task definition은 컨테이너를 실행하기 위해 설정한 내용이다. 컨테이너 이미지, 리소스, 포트 설정들을 한다. docker run 명령과 비슷한 역할.
Task는 Task definition에서 ===정의된 내용을 기반으로 배포된 컨테이너들을 Task라고 한다.=== Task에는 컨테이너가 하나 있을 수도 있고, 여러 개가 있을 수도 있다. 쿠버네티스의 Pod의 개념.
위는 ECS 에 대한 구조이며, 어느 정도 이해가 된다. 추가로 service는 서로 다른 task를 여러 개 실행 가능하다. 그리고 위 사진에서 볼 수 있듯 한 cluster에서 여러 개의 service 실행이 가능.