[AWS] ECS

곽우현·2022년 6월 20일
0

AWS

목록 보기
6/6
post-thumbnail

Amazon ECS란

Amazon Elastic Container Service(Amazon ECS)는 AWS의 컨테이너 관리 서비스이다. ECS를 사용하여 크러스터에서 컨테이너를 실행, 중지 및 관리할 수 있다.

ECS 구성요소

클러스터(Cluster)

작업 또는 서비스의 논리적 그룹이다. 클러스터를 사용하여 애플리케이션을 격리할 수 있다.
격리를 하게되면 동일한 인프라를 사용하지 않고, Fargate에서 작업이 실행되면 클러스터 리소스도 Fargate에서 관리된다.

  • '태스크'가 배포되는 컨테이너 인스턴스들을 논리적인 그룹으로 묶이게 되는데 이 단위를 '클러스터'라고 부른다.

컨테이너 및 이미지(Container, Image)

ECS에서 애플리케이션을 배포하려면 애플리케이션 구성 요소가 컨테이너에서 실행되도록 구성되어야 한다. 컨테이너는 이미지라고 하는 읽기 전용 템플릿에서 생성된다.
이미지는 일반적으로 Dockerfile에서 구축된다. Dockerfile은 컨테이너에 포함되는 모든 구성 요소를 지정하는 일반 텍스트 파일이다. 이미지는 구축된 후 다운로드할 수 있는 레지스트리(Dockerhub, ECR 등)에 저장된다.

태스크 정의(Task Definition)

애플리케이션을 구성하는 하나 이상의 컨테이너를 설명하는 텍스트 파일(JSON형식)이다. 최대 10개의 컨테이너를 설명하는 데 사용할 수 있다. 태스크 정의는 애플리케이션의 청사진 역할을 하며, 애플리케이션에 대한 다양한 파라미터를 지정한다.
예를들어, 운영 체제에 대한 파라미터, 사용할 컨테이너, 개방 포트, 데이터 볼륨 등 을 지정할 수 있다.

  • 원하는 Docker 컨테이너를 생성할 때, 어떤 설정으로 몇개를 생성 살 지를 정의한 Set이다.
  • '태스크 정의'에서 정의된 대로 실제 생성된 컨테이너 Set들을 '태스크'(Task)라고 부르게 된다.

태스크(Task)

태스크는 클러스터 내 태스크 정의를 인스턴스화하는 것이다. ECS에서 애플리케이션에 대한 태스크 정의를 생성하면 클러스터에서 실행할 태스크 수를 지정할 수 있다.

  • 태스크 정의에서 정의된 대로 배포된 컨테이너 Set을 '태스크'라고 부르게 된다. 즉, '태스크' 안에는 한 개 이상의 컨테이너들이 포함되어 있으며 ECS에서 컨테이너를 실행하는 최소 단위(EKS의 Pod)이다.
  • 태스크를 실행하려면 태스크 정의(Task Definition)이 필요하다.

서비스(Service)

ECS 클러스터에서 원하는 수의 태스크를 동시에 실행하고 유지할 수 있다. 태스크가 실패하거나 중지되면 ECS 서비스 스케줄러가 태스크 정의에 따라 다른 인스턴스를 시작하는 방식으로 작동한다. 서비스에서 원하는 수의 태스크를 유지할 수 있다.

  • 태스크들의 Life Cycle을 관리하는 부분이다.
  • 각 태스크들은 각자 다른 서비스이다.
  • 오토스케일링과 로드밸런싱을 관리하는 역할이다.

컨테이너 에이전트(Container Agent)

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

profile
주니어 Java 개발자

0개의 댓글