2. ECS에 대한 사전 조사

본격적으로 작업을 시작하기 전에 개념적으로 공부를 먼저 하려고 합니다. ECS가 어떤 역할을 하는지 그리고 어떤 개념들이 있는지 확인해 보겠습니다.


2.1 ECS의 정의

ECS 홈페이지에 기술된 정의입니다.


"아마존 ECS Elastic Container Service는 확장성이 뛰어난 고성능 컨테이너 오케스트레이션 서비스로서, Docker 컨테이너를 지원하며 AWS에서 컨테이너식 애플리케이션을 쉽게 실행하고 확장 및 축소할 수 있습니다.
Amazon ECS를 사용하면 자체 컨테이너 오케스트레이션 소프트웨어를 설치하고 운영할 필요가 없으며, 가상 머신의 클러스터를 관리 및 확장하거나 해당 가상 머신에서 컨테이너를 예약하지 않아도 됩니다."


이해가 잘 안갑니다. 용어들을 정리하면서 개념을 잡아보겠습니다.


2.2 ECS의 용어 정리

작업 정의Task Definition에 대해서 먼저 설명하려고 합니다. 작업 정의는 실제 배포가 될 컨테이너들과 역할, 필요한 자원 등에 대한 정의입니다. 이 정의대로 실행이 된 프로그램 묶음을 작업Task이라고 합니다. 작업은 클러스터Cluster가 가지고 있는 컴퓨팅 자원 내에서 실행됩니다.

EC2 기반의 ECS라고 한다면 클러스터는 EC2 인스턴스들을 가지고 있습니다. Fargate라고 한다면 클러스터는 사용자 입장에서 논리적인 집합이 됩니다. 그렇게 작업은 클러스터 내에서 실행이 되는데 일반적으로 그 실행의 주체는 서비스입니다. 서비스는 작업을 어떤 정책과 규칙으로 실행할지에 대한 정의를 가지고 있습니다. 작업들을 어떻게 연결해서 외부로 공개할지(로드밸런싱), 작업들을 어떤 규칙에 의해서 늘이고 줄일지 (오토스케일링), 서비스 업데이트 시에 몇 퍼센트의 기존 작업을 종료하고 새로운 작업을 시작할지 등입니다.

정리하면, 작업 정의는 실행될 프로그램에 대한 정의고 작업은 실행된 프로그램이며, 작업은 클러스터 내에서 실행되며, 작업은 서비스가 실행합니다. 쉽게 이해가 가지 않을 것입니다. 이제부터 실제로 하면서 더 깊게 알아보겠습니다.