Fargate vs EC2 Instance Deploy

Fargate는 유연한 관리와 확장을 제공하며 EC2보다 비용이 높지만, 운영 효율성이 향상됩니다.

Fargate vs EC2 Instance Deploy
Photo by Marek Studzinski / Unsplash

Fargate vs EC2 Instance 비교

단순히 EC2와 Fargate 환경을 비용적으로 비교했을 때 같은 용량의 EC2 대비 Fargate가 약 1.5배 정도 청구됩니다.

하지만 Fargate의 경우 AWS의 관리형 서비스로 확장 및 구성 EC2 대비 훨씬 빠르고 유연하게 대응 가능하며 서버리스 형식이기 때문에 Auto Scaling 구성, 마이크로 서비스 구축 등 이후 운영 관리에 있어 지원하는 기능이나 리소스가 간소화될 수 있다는 장점이 있습니다.

서버 자체 및 AWS EC2 서비스를 깊게 이해하고 계신 경우 및 추가적으로 관리할 인력이 있는 경우 EC2가 적합할 수 있지만 대부분의 환경에선 운영하시는 애플리케이션에 집중하고자 하기 때문에 Fargate를 사용하시는 것을 권장드리고 있습니다.

이걸 비교하기 쉽게 정리하면 다음과 같습니다.

핵심적인 부분은 관리 효율성입니다.

  • Fargate를 선택하는 경우:
    • 운영 오버헤드와 인프라 관리를 최소화하고 싶은 경우.
    • 상태 비저장 애플리케이션 또는 마이크로서비스를 사용하는 경우.
    • 단순성과 빠른 배포 속도를 중요하게 생각하는 경우.
    • 가변적인 워크로드에 대한 비용 최적화가 중요한 경우.
  • EC2 구성을 선택하는 경우:
    • 기반 인프라 (인스턴스 유형, OS, 사용자 정의)에 대한 더 많은 제어가 필요한 경우.
    • 특정 스토리지, 라이선스 요구 사항이 있는 애플리케이션을 사용하는 경우.
    • 특정 EC2 인스턴스 유형 또는 하드웨어 기능 (GPU와 같은)을 활용해야 하는 경우.
    • EC2 인스턴스 관리 및 전문성에 대한 인력이 있는 경우.
    • 특정 OS 요구 사항과 커널 수준 접근이 필요한 경우.

참고하실만한 AWS 유튜브 영상이 존재하오니 비용과 관리 효율성을 계산하여 고려해보시는 것을 권장드립니다.


비용 절감 방안

1. Fargate 스팟 활용

  • Fargate 스팟은 비용 절감 만약 애플리케이션이 중단에 내성이 있다면 (예: 배치 작업, 백그라운드 프로세스, 스테이트리스 애플리케이션), Fargate 스팟을 적극적으로 활용하여 비용을 크게 절감할 수 있습니다.
  • 혹은 일정량만큼은 On-demand Fargate를 활용한 뒤 AutoScaling을 위한 증가량은 Spot 인스턴스를 활용하는 등 다양한 방식으로 Spot을 설정할 수 있습니다.
Notion Image

2. 적절한 CPU 및 메모리 리소스 요청

  • Fargate는 task별로 CPU와 Memory를 설정할 수 있으며 EC2보다 세세하게 리소스를 조정할 수 있습니다. 이를 기반으로 애플리케이션의 실제 CPU 및 메모리 사용량을 모니터링하며 초기에는 약간 보수적으로 넉넉하게 설정하고, 운영하면서 점진적으로 각 서비스에 맞게 최적화하는 것을 권장합니다.
  • 이를 위해CloudWatch Container Insights 등을 활용하실 것을 권장하며 리소스 사용량을 상세하게 분석할 수 있습니다.
Notion Image

3. Compute Savings Plans for Fargate

  • 주기적인 최적화를 거쳐 Fargate 워크로드가 예측 가능하고 지속적으로 운영된다면, EC2 Reserved instance와 유사한 플랜인 Compute Savings Plans을 통해 안정적인 비용 절감을 달성할 수 있습니다. Savings Plans은 약정 기간과 약정 금액을 설정해야 하므로, 앞서 2번에서 설명드린 사용 패턴 분석 및 각 태스크 별 최적의 사이징을 거쳐 신중히 구매하는 것이 바람직합니다.