AWS에서 컴퓨팅 인프라를 운영하려면 머리가 아픕니다.
늘 쓰던 것을 쓰면 큰 문제도 고민도(가령 묻지도 따지지도 않고 EC2) 없지만
새로운 제품을 써보려고 하면 일단 제품을 이해하는 것부터 허들입니다 ㅎㅎ
물론 한번 쓰기 시작하면 주머니가 탈탈 털릴 정도로 잘 쓰게 되긴 합니다.
근래에 k8s 쪽을 다룰일이 계속 생기다 보니 AWS의 제품들에도 관심을 갖게 되었고
AWS가 제공하는 컨테이너 오퍼링을 한번 정리해보고 갈 필요가 생겼습니다.
도대체 제품 설명만으로는 "뭥미?" 하는 경우가 종종 있으니...
그 중, 유명한 4가지 제품들을 한번 정리해 보겠습니다.
순서대로 ECS, EKS, Fargate 그리고 ECR 입니다.
ECS, EKS vs. EC2, Fargate
ECS, EKS 를 하나로 묶고 EC2, Fargate를 하나로 묶을 수 있습니다.
ECS는 Elastic Container Service로 Container 기반의 컴퓨팅 플랫폼이라 보면 되고
EKS는 Elastic Kubernetes Service로 Container 기반이지만 k8s가 환경이라 보면 됩니다.
이 두가지가 컨테이너에 대한 오케스트레이션을 담당한다고 보면
EC2, Fargate는 ECS, EKS가 동작하는 호스팅에 대한 레이어를 담당하는 제품들입니다.
즉, EC2와 Fargate 위에 ECS, EKS가 동작한다고 이해하면 됩니다.
한줄 요약 : EC2, Fargate는 컨테이너를 위한 컴퓨팅 리소스이다
ECS vs. EKS
그렇다면 ECS와 EKS는 어떤 차이가 있을까요?
둘다 컨테이너 오케스트레이션 환경이라는 공통점을 갖고 있지만
ECS는 AWS 에서만 제공되는 오케스트레이션 환경이라 타플랫폼으로의 이식성이 떨어지지만
EKS는 쿠버네티스 환경이라 플랫폼간 이전이 더 용이합니다.
한줄 요약 : ECS는 AWS Only, EKS는 범용 k8s
EC2 vs. Fargate
EC2는 워낙 유명하니 다들 잘 아실겁니다.
쉽게 생각해서 가상머신(VM)이라고 봐도 무방합니다.
즉, 독립된 환경이 있고 운영체제를 갖고 있는 컴퓨팅 리소스입니다.
반면 Fargate는 가상머신보다 더 추상화된 컴퓨팅 환경입니다.
서버 없이 코드를 실행하는 람다 Lambda 를 서버리스 Serverless 라고 부르는 것처럼
Fargate는 EC2의 서버리스 버전이라고 생각할 수 있겠습니다.
서버가 없는 컴퓨팅 환경이 Fargate 입니다
한줄 요약 : 독립된 운영체제가 있으면 EC2, 서버리스 컴퓨팅 환경은 Fargate
참고 : https://aws.amazon.com/ko/blogs/korea/how-to-choose-aws-container-services/
Considerations
ECS와 EKS를 봤을때 느낌적 느낌으로 EKS가 비용이 더 나올것이라고 예상됩니다.
네, 정확히 그렇고 ECS가 비용적으로는 EKS 보다 저렴합니다.
하지만 ECS는 k8s가 아니기 때문에 이야기 한 것처럼 이식성이 떨어집니다.
어떤 플랫폼을 쓰던 비용을 계속 체크하면서 써야 하는 것이 퍼블릭 클라우드입니다.
ECS, EKS, 그리고 EC2, Fargate...!
여러분의 선택은 무엇입니까? :-)