[AWS] EC2가 아닌 ECS Fargate 사용 시 좋은 점 (Lv 1)
안녕하세요. Infraboy입니다.
먼저 ECS에서도 Task를 EC2로 동작하도록 설정할 수 있습니다.
본 포스트 내용은 EC2만 이용해서 WEB서버 구축하는 과정과 ECS의 Fargate를 이용해서 구축하는 과정에 대한 비교입니다.
최근 많은 기업에서는 애플리케이션 현대화(Application Modernization)을 추구하고 있습니다.
MSA(Micro Service Architecture)구조의 핵심은 서비스를 모듈화하여 각 구성요소를 독립적으로 운영될 수 있게 하는 방식이고, 분산된 통신 매커니즘으로 Main서비스의 영향없이 서비스를 지속 가능하도록 할 수 있는 방식입니다.
물론 EC2를 사용해서 서비스를 모듈화하는 방식은 가능합니다. 하지만 MSA + AM을 만족시키기 위해서는 우리는 Serverless Computing을 추구해야 합니다.
위 내용만 봐도 "아 그럼 ECS Fargate가 애플리케이션 현대화에 더 가깝구나"라고 생각할 수 있겠지만 조금 더 깊이있게 생각을 해야 합니다.
애플리케이션 또는 목표 서비스에 따라 OS 성능적인 부분과 다양한 인스턴스 유형 및 크기를 선택할 수 있고, 특정 하드웨어 리소스를 더 정확하게 제어할 수 있는 반면 ECS Fargate는 하드웨어 레벨의 제어가 어렵게 됩니다.
또한 동일한 스펙의 EC2와 Fargate의 AWS 월 비용을 참고하면, AWS 상에서 1달간 EC2, Fargate를 각각 운영할 경우 Fargate의 비용이 더 비싸다는 것을 알 수 있습니다. (참고로 EC2의 경우 온디멘드 비용인데, RI/Spot을 이용하면 더욱 비용이 감소하게 됩니다.)
[ EC2 vs Fargate : 4 vCPU, 8GiB 메모리, 20GB 스토리지 가격 비교 ]
그럼에도 불구하고 저는 ECS Fargate를 선호하는 이유를 말씀 드리겠습니다.
EC2가 아닌 ECS Fargate를 사용해야 하는 이유
* 관리, 운영, 보안, 비용적인 측면을 고려하면 :
EC2는 AWS 클라우드 사용료에서는 Fargate보다 비용이 비싸지만, 전체적인 운영 관점에서 생각했을 때 OS 관리 영역을 포함하게 되면 더욱 증가될 수 있습니다.
그렇다면 Fargate가 유리해 보이지만 Container운영에 대해 경험이 부족하거나 기존 방식으로 대규모 아키텍처를 운영한 사람에게는 접근하기 어려운 부분도 있습니다.
관리적인 부분에서는 상황에 따라 EC2가 매우 유리할 수도있고, Fargate가 경제적일 수도 있습니다.
하지만, 서두에 말한 것 처럼 애플리케이션 현대화를 추구한다면 서버리스(Serverless) 구성으로 서버 관리 부담을 제거하고 애플리케이션에 집중할 수 있습니다.
EKS가 아닌 ECS를 사용해야 하는 이유
Amazon Elastic Kubernetes Service(EKS) 또한 AWS에서 제공하는 컨테이너 오케스트레이션 서비스입니다.
EKS는 Kubernetes 기반으로 더 많은 커스터마이징과 설정 옵션이 제공되며 복잡한 애플리케이션 환경에 적합합니다.
무엇보다 EKS는 AWS 이외의 다른 클라우드 플랫폼 및 온프레미스에서도 Kubernets를 사용할 수 있도록 지원하여 멀티 클라우드 및 하이브리드 클라우드로 연동하여 사용할 수 있습니다.
단, EKS는 ECS에 비하여 상세한 구성을 필요로하며 Kubernetes의 학습 곡선을 갖고 있습니다. 더 많은 관리 작업이 필요한 부분이 있고, 비용도 ECS에 비하여 높습니다.ECS를 fargate만 사용한다면 별도의 클러스터 비용이 발생하지 않지만, EKS는 마스터 노드 및 워커 노드에 대한 추가 비용이 필요로 합니다.