AWS Fargate와 Docker를 활용한 Auto Scale Serverless 개발하기: AWS ECS 작업 정의하기

Jake Yang
4 min readFeb 21, 2019

--

안녕하세요, 트남 Jake 입니다.

이번엔 작업을 정의 해 보도록 하겠습니다.

Fargate와 안에 구성되는 요소들은 위 그림과 같은 개념으로 이해하실 수 있습니다. 클러스터 안에 서비스가 N개, 그 안에 작업이 N개, 그 안에 컨테이너가 N개.

ECS 작업은 Fargate 클러스터에서 실제 동작하는 서비스(인스턴스)의 소스 입니다. 즉 작업을 한번 정의 해 놓으면, 다수의 서비스를 생성하여 같은 동작을 여러개 수행할 수 있습니다.

저는 이미 꽤 많은 작업을 정의하여 사용하고 있습니다. “새 작업 정의 생성"을 클릭 해 봅니다.

시작 유형에서 “Fargate” 를 선택 후 다음 단계를 선택합니다.

정의 내용을 구성합니다.

  1. 작업 정의 이름은 말 그대로 작업의 이름을 명명합니다.
  2. 작업 역할은 오른쪽에 Refresh 버튼을 클릭하신 후 “ecsTaskExecutionRole”을 선택합니다.
  3. 작업 메모리는 사용되는 모튼 컨테이너 메모리의 합 이상으로 설정합니다. (참고로 저는, 작업당 1개의 컨테이너 사용을 선호합니다. side effect를 별로 좋아하지 않아서…)
  4. 작업 CPU도 정의 합니다. 이것또한 컨테이너들이 사용할 CPU 파워를 미리 계산하시어 그들의 합으로 설정합니다.
  5. “컨테이너 추가" 를 클릭합니다.
  • 컨테이너 이름을 입력합니다.
  • 이미지에는 지난 강좌 때 업로드 했던 ECR Repositories에서 Image URI를 복사해 넣습니다.
<참고> ECR Image
  • 메모리 제한에서는 어플리케이션이 필요로 하는 메모리의 양을 입력합니다. 이 값은 초기 할당값으로, 소프트제한으로 설정하시면 필요 시 메모리를 가용합니다. 메모리 가용량은 위 작업 정의 시 “작업 메모리" 한도를 넘을 수 없습니다. (전 이런 이유 때문에 “작업 메모리”와 “컨테이너의 메모리 제한”을 같은 값으로 주로 세팅하고, 컨테이너를 1개만 사용합니다.)

HEALTHCHECK 에 위와같이 입력합니다. HEALTHCHECK는 컨테이너의 활성화 유무를 검수하는 방법으로, 이 설정에 있는 조건을 충족하지 못할 시 컨테이너가 자동으로 재시작 됩니다. (Command는 각자의 입맛에 맞는 방법으로 어플리케이션의 상태를 체크할 수 있는 명령어로 정의 합니다.)

다음은 환경 변수 설정 입니다. 어플리케이션에서 필요한 환경변수가 있다면 여기서 세팅하시면 됩니다. 저는 “PORT”만 추가하였습니다.

“추가" 버튼을 누른 후 “작업 및 컨테이너 정의 구성” 화면으로 돌아오시여, “생성" 버튼을 눌러 저장합니다.

자 이제 작업 정의가 완료되었습니다.

참고로 위 스샷 아래쪽에 CloudWatch 로그 그룹이 보이는데요, 나중에 실제로 서비스로 동작 시 어플리케이션에서 출력하는 로그를 이곳에서 확인하실 수 있습니다. (CloudWatch는 AWS에서 제공하는 서비스 중 하나로, 여러 상태를 모니터링 하는 용도로 사용됩니다. 로그를 편리하게 검색할 수 있는 기능도 제공합니다. AWS짱!)

이상으로 작업정의를 완료하였습니다. 그럼 다음 강좌에서 뵐께요~

--

--