AWS Fargate와 Docker를 활용한 Auto Scale Serverless 개발하기: AWS ECS 작업 정의하기
안녕하세요, 트남 Jake 입니다.
이번엔 작업을 정의 해 보도록 하겠습니다.
Fargate와 안에 구성되는 요소들은 위 그림과 같은 개념으로 이해하실 수 있습니다. 클러스터 안에 서비스가 N개, 그 안에 작업이 N개, 그 안에 컨테이너가 N개.
ECS 작업은 Fargate 클러스터에서 실제 동작하는 서비스(인스턴스)의 소스 입니다. 즉 작업을 한번 정의 해 놓으면, 다수의 서비스를 생성하여 같은 동작을 여러개 수행할 수 있습니다.
그럼, ECS 작업 정의 페이지로 이동합니다.
https://ap-northeast-2.console.aws.amazon.com/ecs/home?region=ap-northeast-2#/taskDefinitions
저는 이미 꽤 많은 작업을 정의하여 사용하고 있습니다. “새 작업 정의 생성"을 클릭 해 봅니다.
시작 유형에서 “Fargate” 를 선택 후 다음 단계를 선택합니다.
정의 내용을 구성합니다.
- 작업 정의 이름은 말 그대로 작업의 이름을 명명합니다.
- 작업 역할은 오른쪽에 Refresh 버튼을 클릭하신 후 “ecsTaskExecutionRole”을 선택합니다.
- 작업 메모리는 사용되는 모튼 컨테이너 메모리의 합 이상으로 설정합니다. (참고로 저는, 작업당 1개의 컨테이너 사용을 선호합니다. side effect를 별로 좋아하지 않아서…)
- 작업 CPU도 정의 합니다. 이것또한 컨테이너들이 사용할 CPU 파워를 미리 계산하시어 그들의 합으로 설정합니다.
- “컨테이너 추가" 를 클릭합니다.
- 컨테이너 이름을 입력합니다.
- 이미지에는 지난 강좌 때 업로드 했던 ECR Repositories에서 Image URI를 복사해 넣습니다.
- 메모리 제한에서는 어플리케이션이 필요로 하는 메모리의 양을 입력합니다. 이 값은 초기 할당값으로, 소프트제한으로 설정하시면 필요 시 메모리를 가용합니다. 메모리 가용량은 위 작업 정의 시 “작업 메모리" 한도를 넘을 수 없습니다. (전 이런 이유 때문에 “작업 메모리”와 “컨테이너의 메모리 제한”을 같은 값으로 주로 세팅하고, 컨테이너를 1개만 사용합니다.)
HEALTHCHECK 에 위와같이 입력합니다. HEALTHCHECK는 컨테이너의 활성화 유무를 검수하는 방법으로, 이 설정에 있는 조건을 충족하지 못할 시 컨테이너가 자동으로 재시작 됩니다. (Command는 각자의 입맛에 맞는 방법으로 어플리케이션의 상태를 체크할 수 있는 명령어로 정의 합니다.)
다음은 환경 변수 설정 입니다. 어플리케이션에서 필요한 환경변수가 있다면 여기서 세팅하시면 됩니다. 저는 “PORT”만 추가하였습니다.
“추가" 버튼을 누른 후 “작업 및 컨테이너 정의 구성” 화면으로 돌아오시여, “생성" 버튼을 눌러 저장합니다.
자 이제 작업 정의가 완료되었습니다.
참고로 위 스샷 아래쪽에 CloudWatch 로그 그룹이 보이는데요, 나중에 실제로 서비스로 동작 시 어플리케이션에서 출력하는 로그를 이곳에서 확인하실 수 있습니다. (CloudWatch는 AWS에서 제공하는 서비스 중 하나로, 여러 상태를 모니터링 하는 용도로 사용됩니다. 로그를 편리하게 검색할 수 있는 기능도 제공합니다. AWS짱!)
이상으로 작업정의를 완료하였습니다. 그럼 다음 강좌에서 뵐께요~