DevOps & SRE/AWS & Cloud

[AWS ECS] ECS 개념 정리

반응형
AWS ECS로 시작하는 컨테이너 오케스트레이션와 ECS 레퍼런스 등을 보며 개인적인 공부용으로 정리한 글입니다.

컨테이너 오케스트레이션

  • 컨테이너를 적절히 배치하고 관리할 수 있도록 도와주는 도구
  • 쿠버네티스, Docker Swarm, AWS ECS 등


AWS ECS의 장단점

  • 특별한 준비 없이 사용할 수 있다는 장점.
  • 도커의 모든 기능을 사용하기에는 약간 제약이 존재하며, 세부적으로 컨트롤 하기 어려움.
  • AWS 벤더에 의존적임.


AWS의 구성

클러스터와 컨테이너 인스턴스

  • 클러스터는 ECS에서 가장 기본적인 단위
  • 도커 컨테이너를 실행할 수 있는 가상의 공간으로, 논리적인 단위이다.


Task Definition, Task

Task

  • ECS에서 컨테이너를 실행하는 최소 단위는 테스크.
  • Task는 하나 이상의 컨테이너로 구성된다. (일반적으로 하나의 필수 컨테이너만으로 구성됨)
  • 하나의 Task가 여러 컨테이너로 구성될 시, Task로 실행되는 컨테이너들은 모두 같은 컨테이너 인스턴스에서 실행되는 것이 보장된다.


Task Definition

  • 컨테이너 오케스트레이션에서는 컨테이너가 필요에 따라 자동적으로 실행되거나 종료될 수 있다.
  • Task를 실행할 때, 컨테이너 네트워크 모드, Task 역할, 도커 이미지, 실행 명령어, CPU 제한, 메모리 제한 등 다수의 설정이 필요한대, 매번 이런 설정들을 지정하기보다는, 미리 설정들의 집합을 하나의 단위로 정의해두고 사용한다.
  • 한 번 Task Definition을 만들면 이것을 기반으로 특정 설정을 변경할 수 있으며, 이렇게 변경된 내용들은 모두 리비전으로 저장된다.

Task는 클러스터에 종속적이지만, Task Definition은 클러스터에 종속적이지 않다


Service

클러스터에는 두 가지 방식으로 Task를 실행할 수 있다.

  • Task Definition으로 직접 Task를 실행하는 방식
    • Task가 곧바로 실행되며, 실행 된 이후에는 더 이상 관리되지 않는다.
    • 일회성 명령어라면 한 번 실행된 후 종료되며, 데몬 프로세스라면 Task를 명시적으로 종료할 때 까지 컨테이너가 남아있다.
    • 배치 작업 등에서 사용된다.
  • 서비스를 정의하는 방법
    • Replica 타입
      • 실행하려는 Task의 개수를 지정해야 한다.
      • 서비스는 클러스터에서 이 개수만큼 Task가 실행되도록 자동적으로 관리해준다.
    • Daemon 타입
      • 모든 컨테이너 인스턴스에 해당하는 테스크가 하나씩 실행된다.

  • EC2와 같은 컴퓨팅 자원을 직접 사용해서 프로세스를 배치하는 경우 서버 관리자가 직접 어떤 인스턴스에 어떤 프로세스를 언제 배치할지 결정해야 한다.
  • 반면에 오케스트레이션에서는 이러한 관리를 담당하는 스케줄러가 존재한다.
    • ECS에서는 서비스가 이러한 스케줄링을 담당한다.
    • ECS 서비스는 각 인스턴스들에 설치된 ecs-client에서 수집된 정보를 바탕으로 어디에 어떤 Task를 언제 실행할지 결정한다.
반응형