Amazon Elastic Container Service
개요
완전 관리형 컨테이너 오케스트레이션 서비스.
오케스트레이션하면 흔히 떠오르는 것은 쿠버네티스인데, 사실 4.RESOURCE/KNOWLEDGE/AWS/AWS에서 제공하는 관련 서비스로는 Amazon Elastic Kubernetes Service라는 것이 있다.
ECS는 그것과 별개로 새롭게 나왔다.
흔히 도커 기반이라고 많이들 부르는 것 같다.
사용하는데 있어서 쿠버네티스처럼 많은 설정을 요구하지 않고, 상당수 많은 부분이 aws의 서비스와 결합될 수 있도록 설계됐다.
그래서 쿠버네티스를 사용해보지 않은 사람이라면, 오히려 이게 더 쉽다고 하는 듯.
그래서 러닝 커브가 낮다고도 이야기된다.
(사용 경험 상으로는 엄청 그렇지는 않은 것 같았다.)
구성
일단 기능을 보기 전에 어떤 놈인지 알기 위해 구성을 본다.
ecs를 구성할 때는 다음과 같은 방식으로 한다.
각각의 요소를 간단하게 보자.
클러스터
ecs의 영역으로 관리되는 논리적 그룹을 말한다.
그냥 ecs라 하면 그 안에 포함되는 모든 것들이 있는 공간.
서비스
쿠버로 치면 Service와 Deployment를 합친 느낌이라 보면 될 듯.
ecs에서의 기본 단위인 태스크를 동일한 녀석들끼리 묶는 그룹이다.
버전도 지정할 수 있고, 개수 지정도 가능하다.
엥 이거 완전 디플로이먼트..
근데 여기에서 서비스 역할까지 할 수 있다.
즉, 태스크들에 트래픽을 라우팅하는 기능까지 있다는 것이다.
(실제로 이건 ALB를 붙이는 것으로 설정된다.)
태스크
이것은 실제 로직을 담당하는 하나 이상의 컨테이너를 말한다.
파드와 딱 봐도 비슷한 개념이라는 것을 알 수 있다.
근데 이것은 우리가 직접 이 태스크를 만들지는 않는다.
태스크 데피니션
한글로 번역하면 너무 의미가 안 사는데..
일단 말 그대로 작업 정의.
우리는 이 작업 정의를 통해 태스크를 만들게 된다.
여기에서 cpu, 메모리, 어떤 이미지를 사용할 것이고 이런 설정들을 하게 된다.
또한, 여기에서 EC2, Amazon Fargate 중 어떤 환경을 활용할지 정할 수 있다.
사용 방식
다음과 같은 방식으로 사용을 하게 된다.
- 태스크 데피니션 정의
- 서비스 생성
- 스케줄러 작동
- 배포
대충 이런 순서를 거치는데, 이를 위해서 몇몇 세팅이 또 들어가긴 한다.
가령 서비스에 설정할 로드밸런서라던가.
배포 전략
두 가지 배포 전략을 직접적으로 할 수 있다.
특징
어떤 특징이 있고 장점이 있을까?
간단하게만 보겠다.
- 완전 관리형 컨테이너 서비스
- 말 그대로다.
- 엔터프라이즈 수준의 서버리스 컨테이너 플랫폼
- Amazon Fargate와 연동하여 사용할 수 있다.
- FREE
- ecs는 그 자체로는 요금이 없다!
- 말 그대로 프로비저닝된 만큼만 요금을 내면 된다.
- 사실 Amazon Elastic Kubernetes Service도 보면 관리 비용이 아주 쬬오끔 들어가고, 실제 비용은 결국 프로비저닝된 리소스 비용이기는 하다..
- 다양한 오픈소스, aws 리소스와 연동 가능
- 뭐, 이것도 사실 당연한 것이다.
기능
위에서 봤듯이 알겠지만, 이 녀석의 기능은 말 그대로 오케스트레이션이다.
즉, 컨테이너 셀프 힐링, 오토 스케일링, 자원 설정 등의 작업들을 할 수 있다.
너무 당연하다..
이 녀석의 방식으로 지원해주는 기능들을 살펴보자.
헬스체크
컨테이너에 대해, 로드밸런스에 대해 헬스체크를 지원한다.
컨테이너라 하면 컨테이너 프로브#livenessProbe, 로드 밸런서라 하면 컨테이너 프로브#readinessProbe를 지원한다고 보면 되겠다.
드레인
로밸에서 드레인 상태를 확인하고, 작업이 완료될 때 컨테이너에 sigterm을 날린다고 한다.