Amazon ECS란
Amazon Elastic Container Service(Amazon ECS)는 AWS의 컨테이너 관리 서비스이다. ECS를 사용하여 크러스터에서 컨테이너를 실행, 중지 및 관리할 수 있다.
ECS 구성요소
작업 또는 서비스의 논리적 그룹이다. 클러스터를 사용하여 애플리케이션을 격리할 수 있다.
격리를 하게되면 동일한 인프라를 사용하지 않고, Fargate에서 작업이 실행되면 클러스터 리소스도 Fargate에서 관리된다.
ECS에서 애플리케이션을 배포하려면 애플리케이션 구성 요소가 컨테이너에서 실행되도록 구성되어야 한다. 컨테이너는 이미지라고 하는 읽기 전용 템플릿에서 생성된다.
이미지는 일반적으로 Dockerfile에서 구축된다. Dockerfile은 컨테이너에 포함되는 모든 구성 요소를 지정하는 일반 텍스트 파일이다. 이미지는 구축된 후 다운로드할 수 있는 레지스트리(Dockerhub, ECR 등)에 저장된다.
애플리케이션을 구성하는 하나 이상의 컨테이너를 설명하는 텍스트 파일(JSON형식)이다. 최대 10개의 컨테이너를 설명하는 데 사용할 수 있다. 태스크 정의는 애플리케이션의 청사진 역할을 하며, 애플리케이션에 대한 다양한 파라미터를 지정한다.
예를들어, 운영 체제에 대한 파라미터, 사용할 컨테이너, 개방 포트, 데이터 볼륨 등 을 지정할 수 있다.
태스크는 클러스터 내 태스크 정의를 인스턴스화하는 것이다. ECS에서 애플리케이션에 대한 태스크 정의를 생성하면 클러스터에서 실행할 태스크 수를 지정할 수 있다.
ECS 클러스터에서 원하는 수의 태스크를 동시에 실행하고 유지할 수 있다. 태스크가 실패하거나 중지되면 ECS 서비스 스케줄러가 태스크 정의에 따라 다른 인스턴스를 시작하는 방식으로 작동한다. 서비스에서 원하는 수의 태스크를 유지할 수 있다.
ECS 클러스터 내의 각 컨테이너 인스턴스에서 실행된다. 에이전트는 현재 실행 중인 태스크와 컨테이너의 리소스 사용률에 대한 정보를 ECS로 전송한다. ECS로부터 요청을 수신할 때마다 태스크를 시작, 중지한다.
EKS와의 차이점
컨테이너 오케스트레이션을 하는 서비스는 맞다. EKS는 어떠한 Public Cloud를 kubernetes를 사용하니 이식성이 쉽지만 ECS는 AWS의 컨테이너 오케스트레이션이라 AWS에서만 지원해준다.
즉, 오케스트레이션을 해준다는 것은 공통점이지만 EKS가 ECS보다 이식성이 높다. ECS는 AWS에서만 지원된다. 정도인거 같다.
참고자료
https://wooono.tistory.com/133
https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide