개요

ECS, EKS, Fargate, Kops 의 차이를 요약해본다.

ECS with EC2

  • AWS 자체 개발하여 제공하는 컨테이너 서비스
  • 장점
    • EC2 인스턴스에 대한 full 컨트롤, GPU 인스턴스 활용 용이
    • spot 인스턴스 활용 가능하여 최대 90% 비용 절감
  • 단점
    • EC2 인스턴스를 직접 관리해야함, 예: 인스턴스에 대한 보안 패치 등을 직접 처리해야함

ECS with Fargate

  • EC2 인스턴스 관리에 대해 걱정 안해도 됨
  • 장점
    • 관리할 서버가 없음
    • CPU/Memory 선택이 상대적으로 좀 더 용이함
    • Fargate Spot을 사용하여 70% 절감된 금액으로 이용할 가능성 있음
  • 단점
    • awsvpc로 네트워크 옵션이 제한됨

EKS

  • master 노드를 aws에서 관리해주는 k8s 클러스터 서비스

  • 장점

    • k8s 클러스터 컨트롤을 안해도 됨(설치, 운영)
    • k8s용 tool이나 plugin연동 용이
    • EKS 자체가 클러스터 관리 능력이 뛰어남
    • AWS 서비스랑 연동 손쉬움
    • VPC 네트워킹 사용
    • 기존 오픈소스 k8s 클러스터랑 호환 잘 됨
    • EC2 spot 인스턴스를 지원해 비용절감 가능함
  • 단점
    • 필자 사견인데 딱히없다. ECS보다 오픈소스인 K8S를 사용하여 클러스터를 운영하는게 효율적인것 같다.

Fargate

  • 보통 컨테이너 관리 플랫폼을 쓰면 같은 서버에서 CPU/MEM이 클러스터 관리용으로 일부 소비되게 되어있다. 예를 들면 K8S worker노드가 사용자의 목적에 맞는 프로그램 수행만 하는게 아니라 K8S 관련 프로세스들으 자원을 소모하는것이다.
  • Fargate는 이 관리 부분은 다 클라우드 뒤로 숨기고 비지니스 본연에만 집중하는 것이다.
  • 장점
    • 클러스터를 생성하고 workload를 추가하는데 세부적인 장비 설정등은 다 aws에 맡길수 있다.
  • 단점
    • 정기적인 서비스 환경에서는 장점이 희석됨
    • AWS VPC만 지원함
    • 동작 과정에서 제어권이 적음

Kops

  • AWS가 제공해주는 K8s Operations
  • k8s 클러스터 업그레이드 등의 목적으로 쓸 수 있음
  • 필자 사견
    • 굳이 Kops 까지 가지말고 EKS를 그대로 쓰면 될 것 같다. 특히 Kops를 쓰면 마스터 노드까지 관리해야 하는듯 하다.

필자의 의견

  • EKS를 쓰는게 합리적인것 같다.
    • 이를 통해 오픈소스의 장점과 아마존에서 관리해주는 부분의 장점을 레버리지 할 수 있을듯 하다.
  • EKS의 Worker는 Spot Instance까지 고려하여 비용 절감을 고려하면 더 좋을것 같다.

Reference

  • https://cast.ai/blog/aws-eks-vs-ecs-vs-fargate-where-to-manage-your-kubernetes/