ECS를 시작하기전 알았으면 좋았을 것들 — 1. 용어 설명

Harry The Great
해리의 유목코딩
4 min readJun 13, 2018
  • 1편 — 용어 설명
  • 2편 — 로드밸런싱과 오토스케일링
  • 3편 — CI/CD와 Workflow

지난번 Lambda를 시작하기 전 알았으면 좋았을것들에 대해 많은분들이 Clap을 눌러주셔서 감사함에 보답드리고자 이번엔 ECS로 3편분량의 내용을 연재하고자합니다. Lambda는 참고할만한 레퍼런스가 어느정도 많지만 ECS는 그에비해 많이 적어 삽질을 상당히 많이하게 되었는데요. 이에 대한 경험담을 공유하고자합니다.

직접 어떻게 하는지에대한 튜토리얼 보다는 어떠한 내용이고 어떻게 사용을 하는지에 대한 내용이며 위 3편 연재가 끝난 후 기회가 된다면 ecs-cli와 codebuild를 통해 직접 실습하는 내용도 연재하겠습니다.

본 내용은 Docker에 대한 기본적인 지식이 있음을 전제로합니다.

기존에 도커를 만져보셨던 분들 혹은 도커 튜토리얼을 보며 Dockerfile, docker-compose.yml등을 세팅해보시고 ECS를 메뉴를 보면 상당히 당황스럽습니다.

(클러스터는 뭐고 작업정의랑 작업은 뭐가다른거야…)

용어에 대한 이해

처음 접하면 사실 용어로 인해 더 헷갈리는 내용이 많습니다. ECS를 구성하는 요소로 크게 나누자면 5가지로 볼 수 있습니다.

  • 컨테이너 인스턴스
  • 클러스터
  • 작업
  • 작업정의
  • 서비스

컨테이너 인스턴스

컨테이너 인스턴스란 말그대로 도커구동을 위해서 작동하는 EC2 인스턴스입니다. 일반 EC2와 마찬가지로 오토스케일링이 가능하고 타입과 사이즈를 선택할 수 있는 아주 일반적인 개념의 EC2 컴퓨터입니다.

클러스터

위에 언급한 컨테이너 인스턴스들의 묶음입니다. 가용영역과 지역을 설정할 수 있습니다. (Fargate에 대한 내용은 배제하였습니다.)

작업

작업은 이런 클러스터 위에서 돌아가는 도커 컨테이너들을 말합니다. 각 작업은 클러스터에 종속되어있으며 같은 호스트상에 놓이게됩니다. 예를들어 PHP와 Mysql 도커이미지를 클러스터에서 구동한다면 각각 PHP 작업과 Mysql 작업이 필요합니다.

작업정의

작업정의는 이런 도커 컨테이너들을 위한 설정 템플릿입니다. 일반적으로 사용하는 명령어인 docker run에서 사용하는 volume정의, 환경변수등은 다 이 작업정의를 통해 설정하여줍니다.

서비스

서비스는 조금은 추상적입니다. 같은 작업단위에 있는 내용의 묶음으로 우리가 일반적으로 사용하는 docker-compose.yml나 도커스웜에서 사용하는 내용이 서비스라고 볼 수 있습니다. 즉 PHP와 Mysql 작업을 묶어서 웹 서비스를 만들 수 있습니다.

서비스에서는 몇개의 작업을 구동할지 설정해줄 수 있습니다. 예를들어 8개의node 컨테이너가 구동이 되도록 설정했다면 2개의 node 컨테이너에 문제가생겨 종료가 되어도 서비스에서 2개를 다시 생성하게됩니다. 서비스는 오토스케일링을 통해 숫자를 조절할 수 있고 로드밸런스와 묶을 수 있습니다.

지금까지 이미지들은 하나하나 추가되는 모습을 보여드리고자 한 이미지이고 한눈에 도식화를 한다면 아래 이미지가 제일 적합합니다.

도식화

보시면 서비스의 경우 작업정의에서 도커에 대한 설정을 받아와 서비스 단위로 묶는것을 의미합니다. 또한 작업정의는 서비스없이도 각각의 작업들을 구동할 수 있습니다.

마치며

이미지 설명이 모호한점이 있어 조금은 이해하기 어려우실 수 있으실것같습니다. 다음번에는 로드밸런싱과 오토스케일링에 대해 이어나가겠습니다.

--

--

Harry The Great
해리의 유목코딩

Android & IOS Developer 😀 미디움 이외에 스니펫이나 디버그노트로 활용하는 https://www.harrymikoshi.com/ 블로그도 운영하고있습니다.