Amazon Elastic Container Service

개요

완전 관리형 컨테이너 오케스트레이션 서비스.
오케스트레이션하면 흔히 떠오르는 것은 쿠버네티스인데, 사실 4.RESOURCE/KNOWLEDGE/AWS/AWS에서 제공하는 관련 서비스로는 Amazon Elastic Kubernetes Service라는 것이 있다.
ECS는 그것과 별개로 새롭게 나왔다.
흔히 도커 기반이라고 많이들 부르는 것 같다.

사용하는데 있어서 쿠버네티스처럼 많은 설정을 요구하지 않고, 상당수 많은 부분이 aws의 서비스와 결합될 수 있도록 설계됐다.
그래서 쿠버네티스를 사용해보지 않은 사람이라면, 오히려 이게 더 쉽다고 하는 듯.
그래서 러닝 커브가 낮다고도 이야기된다.
(사용 경험 상으로는 엄청 그렇지는 않은 것 같았다.)

구성

일단 기능을 보기 전에 어떤 놈인지 알기 위해 구성을 본다.
Pasted image 20241103215254.png
ecs를 구성할 때는 다음과 같은 방식으로 한다.
각각의 요소를 간단하게 보자.

클러스터

ecs의 영역으로 관리되는 논리적 그룹을 말한다.
그냥 ecs라 하면 그 안에 포함되는 모든 것들이 있는 공간.

서비스

쿠버로 치면 ServiceDeployment를 합친 느낌이라 보면 될 듯.
ecs에서의 기본 단위인 태스크를 동일한 녀석들끼리 묶는 그룹이다.

버전도 지정할 수 있고, 개수 지정도 가능하다.
엥 이거 완전 디플로이먼트..
근데 여기에서 서비스 역할까지 할 수 있다.
즉, 태스크들에 트래픽을 라우팅하는 기능까지 있다는 것이다.
(실제로 이건 ALB를 붙이는 것으로 설정된다.)

태스크

이것은 실제 로직을 담당하는 하나 이상의 컨테이너를 말한다.
파드와 딱 봐도 비슷한 개념이라는 것을 알 수 있다.
근데 이것은 우리가 직접 이 태스크를 만들지는 않는다.

태스크 데피니션

한글로 번역하면 너무 의미가 안 사는데..
일단 말 그대로 작업 정의.
우리는 이 작업 정의를 통해 태스크를 만들게 된다.
여기에서 cpu, 메모리, 어떤 이미지를 사용할 것이고 이런 설정들을 하게 된다.
또한, 여기에서 EC2, Amazon Fargate 중 어떤 환경을 활용할지 정할 수 있다.

사용 방식

다음과 같은 방식으로 사용을 하게 된다.

대충 이런 순서를 거치는데, 이를 위해서 몇몇 세팅이 또 들어가긴 한다.
가령 서비스에 설정할 로드밸런서라던가.

배포 전략

두 가지 배포 전략을 직접적으로 할 수 있다.

특징

어떤 특징이 있고 장점이 있을까?
간단하게만 보겠다.

기능

위에서 봤듯이 알겠지만, 이 녀석의 기능은 말 그대로 오케스트레이션이다.
즉, 컨테이너 셀프 힐링, 오토 스케일링, 자원 설정 등의 작업들을 할 수 있다.
너무 당연하다..

이 녀석의 방식으로 지원해주는 기능들을 살펴보자.

헬스체크

컨테이너에 대해, 로드밸런스에 대해 헬스체크를 지원한다.
컨테이너라 하면 컨테이너 프로브#livenessProbe, 로드 밸런서라 하면 컨테이너 프로브#readinessProbe를 지원한다고 보면 되겠다.

드레인

로밸에서 드레인 상태를 확인하고, 작업이 완료될 때 컨테이너에 sigterm을 날린다고 한다.

관련 문서

이름
E-AWS KRUG 핸즈온 실습 - ECS
EKS, ECS 비교
Amazon Fargate

참고