티스토리 뷰

ECS 클러스터 안에 서비스를 등록할 때 선택하게 되는 Service type에 대해서 살펴보겠습니다.

REPLICA vs DAEMON

 

먼저 옆에 i 아이콘에 마우스를 올려서 팝업 도움말을 살펴보면 다음과 같은 문구를 볼 수 있습니다.

Replica services place and maintain a desired number of tasks across your cluster. Daemon services place and maintain one copy of your task on each container instance. If a capacity provider strategy is used, the DAEMON service type is not supported.

 

위의 내용은 아래와 같이 정리하고 사용할 수 있습니다

 

# Replica service

클러스터 안에 task를 N개로 운영할 수 있습니다. 일반적으로 컨테이너 서비스를 사용할 때 선택되는 옵션입니다. restful api를 다루는 백엔드 서버, React, Vue와 같은 프런트 서비스를 서빙(배포&운영)할 때 사용하면 좋습니다. 배치 작업도 아주 훌륭한 선택이지만 이때는 트랜잭션 등 여러 가지가 함께 고민되어야 합니다. 

 

# Daemon services

클러스터 안에 task를 컨테이너 인스턴스 대수와 동일하게 운영됩니다. 즉, task의 개수를 사용자가 설정할 수 없습니다. 모든 인스턴스에 한 개의 task를 띄울 때 사용하면 되는 설정인데 인스턴스 모니터링을 위해 메트릭 정보를 수집하는 데몬이라던지, 인스턴스에서 발생하는 컨테이너의 로그를 수집하고 일괄 처리하는 데몬 등을 띄울 때 사용하면 좋습니다. 직접 구현하는 경우가 아닌 오픈소스를 생각해 보면 프로메테우스(Prometheus)라던지 fluentd, loglogstash와 같은 수집기가 떠오르지만 이건 클러스터를 운영하는 엔지니어의 취향에 따릅니다. 일반적으로 로그 수집기는 task안에 작업을 처리하는 Container와 함께 묶이는 경우가 더 많을 테니까요. 로그 수집의 종착지가 CloudWatch가 끝이라면 Container의 간단한 설정으로 stdout, stderr로 출력되는 로그를 CloudWatch에 전송할 수 있습니다

 

# 마무리

그림으로 정리해보면 다음과 같습니다. 빨간색 점선으로 등록되어 있는 service A가 Daemon service로 등록한 예시고, service B, service C가 Replica service로 등록된 예시입니다. 물론 Container의 개수는 훨씬 많을 수 있지만 여기 예시에서는 각각 2개, 1개로 표현합니다.

사실 이변이 없다면 컨테이너 서비스를 이용하려는 목적의 9할은 Replica services를 선택하게 될 겁니다. 그럼에도 각각의 설정이 나타내는 의미가 무엇이고 어떤 경우에 사용되면 좋은지 알고 있다면 더욱 좋은 결과물을 만들 수 있겠습니다. 

댓글
댓글쓰기 폼