Skip to main content

AWS ECS (Elastic Container Service)

개요#

  • AWS ECS는 Fargate, Cluster, Task Definition, Task, Service등의 다양한 서비스를 제공하여, 도커 컨테이너를 편하게 배포할 수 있도록 도와준다.
  • 다만, 뉴비 입장에선 어려운 용어가 많아서 조금 어려울 수 있다
  • 그래서 AWS 공식문서의 내용을 기반으로 간단하게 정리해보았다.

AWS Fargate#

  • https://docs.aws.amazon.com/AmazonECS/latest/userguide/what-is-fargate.html
  • Fargate는 서버나 EC2 인스턴스 클러스터를 직접 설정하지 않아도, AWS ECS와 함께 다수의 컨테이너를 실행할 수 있는 기술이다.
  • Fargate를 사용하면 더 이상 컨테이너를 실행하기 위해 가상머신 클러스터를 프로비저닝하고, 구성하고 확장할 필요가 없다고 한다.(참고로 Provisioning이란 클라우드 제공자의 자원을 고객에게 할당하는 행위를 뜻함)

Cluster#

  • AWS ECS 클러스터는 태스크나 서비스의 논리적인 그룹이다
  • 앱들을 격리시키기 위해 클러스터를 사용할 수 있다고 한다.
  • 태스크를 Fargate에서 실행하면, 클러스터의 자원들 역시 Fargate에 의해 관리된다고 한다.

Task Definitions#

  • Task Definition이란, 애플리케이션 컨테이너를 묘사하는 텍스트 파일을 말한다.
  • JSON 포맷이고, 이걸로 최대 10개의 컨테이너를 묘사할 수 있다.
  • 우리 애플리케이션 인프라의 청사진이라고 할 수 있다
  • OS, 애플리케이션 인프라 구성에 필요한 매개변수, 포트 매핑정보, 데이터 볼륨등, 컨테이너 구성에 필요한 모든 정보가 Task Definition에서 작성된다.

Tasks#

  • Task Definition이 인스턴스화 된 결과물을 Task라고 한다.
  • Task Definition을 만들고 나면, 클러스터에서 실행될 태스크의 개수를 명시할 수 있는데, 태스크만 가지고 실행할수도 있고, 서비스의 일부분으로서 태스크를 실행할수도 있다

Services#

  • AWS ECS 서비스를 사용해서 원하는 만큼의 태스크를 ECS 클러스터에서 동시에 실행 및 유지할 수 있다
  • 실행중이던 태스크가 죽거나 하면, ECS 서비스 스케줄러가 새로운 태스크를 실행시켜줘서, 죽은 태스크의 빈자리를 대신 채워줄 수 있도록 해준다. 이런 식으로 원하는 만큼의 태스크가 실행되는걸 유지시켜준다.