IT/Back-end

ECR+EC2 VS ECR+ECS

1am_wish 2024. 7. 23. 00:20
728x90
반응형

요즘 docker를 이용한 서비스가 많아졌다. 컨테이너 기술을 활용하여 애플리케이션을 일관되게 실행할 수 있어서 많이 사용하고 있다. 나도 서비스 새로 만들때 웬만하면 도커를 쓰는 편인데, 이미지 생성해서 ECR에 올리고 EC2 서버에 배포하는 식으로 사용했었다.

그런데 ECS라고 컨테이너 기반 애플리케이션을 쉽게 배포할 수 있는 서비스를 알게 되었다. 그래서 이런 컨테이너 기반 애플리케이션을 EC2을 통해 배포하는 것과 ECS을 통해 배포하는 것의 차이를 알아보고자 한다.

여기서 다루는 ECS는 서버리스 기반의 Fargate를 가정으로 한다. (서버리스가 아니라면 어차피 ECS랑 EC2랑 연동하는거라..)

 

일단 ECR, EC2, ECS는 다음과 같다.

  • ECR(Elastic Container Registry) : 이미지를 저장하는 레지스트리 서비스. 나는 도커 이미지를 만들어 클라우드에 저장하는 저장소의 개념으로 사용하고 있다.
  • EC2(Elastic Compute Cloud) : 가상 서버 인스턴스를 제공하는 서비스. 그냥 원격 컴퓨터라고 생각하면 된다.
  • ECS(Elastic Container Service) : 이미지를 가져와서 컨테이너를 실행하고 관리할 수 있는 서비스.

 

ECS로 ECR을 배포했을 때의 장점

설명으로만 보아서는 EC2보다는 ECS가 좀 더 ECR과 연동이 잘 될 것 같다.
실제로 ECR은 AWS 기반 컨테이너 오케스트레이션을 제공해서 ECR와는 찰떡같은 궁합이다.

  • ECR의 이미지를 가져와 쉽게 배포, 관리, 확장할 수 있다.
  • 운영 부담이 적다.
  • 효율적으로 컨테이너를 관리할 수 있다.

 

 

단편적으로 보면 EC2로 배포하는 건 서버도 직접 관리해야하고 도커도 따로 설치해야하고 컨테이너 관리랑 업데이트도 직접 해야하고 설정도 번거로운데 왜 사용할까?

EC2로 ECR을 배포했을 때의 장점

우선, 개발중의 여러 선택사항과 마찬가지로 운영 환경에 따라 달라진다.
EC2로 개발할 때에는 초기 설정 및 관리가 까다롭지만, 더 높은 유연성 제어를 제공한다. 

 

ECR에 비해 EC2는 다음과 같은 지원을 제공한다.

  • 인스턴스 옵션 : EC2의 경우 다양한 인스턴스 유형과 크기 조정을 제공하는 등 워크로드에 맞는 인스턴스를 선택할 수 있다. 반면에 ECR은 vCPU와 메모리의 조합만 선택할 수 있다.
  • 네트워킹 옵션 : EC2의 경우 ENI, VPC 피어링, Direct Connect등 고급 네트워크 기능을 지원한다, 반면 ECR의 경우 Fargate에서는 ENI를 직접 제어하는데 제한이 있다. Fargate의 경우 고정 IP를 직접 할당할 수 없다.
  • 스토리지 옵션 : Fargate는 EBS 볼륨을 직접 사용할 수 없고 임시 스토리지만 제공되어 세부적인 스토리지 옵션이 제한적이다.

 

 

이와 같이 ECS로 배포했을 때, EC2로 배포했을 때의 차이가 있다.
이렇게 제품의 요구사항에 따라 ECS와 EC2 중에 선택할 수도 있겠지만, 우리에겐 비용도 꽤 중요하다...
비용 관점에서 비교해보자.

 

ECS와 EC2의 비용 비교

비용은 서버와 서버리스의 비교와 비슷하다.

ECS Fargate의 경우 서버리스이기 때문에 유휴 자원에 대한 비용 부담이 없다. 
당연하게도 트래픽이 많아질 경우 사용한 만큼 비용이 발생하기 때문에 비용이 급격히 상승할 수 있다.

EC2의 경우 선택한 인스턴스의 타입에 따라 시간 당 비용이 발생한다. 트래픽이 적을 경우 비용 효율성이 떨어진다.
예약 인스턴스, 스팟 인스턴스 등 비용 절감 옵션을 제공한다. 한 인스턴스에 여러 개의 컨테이너를 올릴 수 있다.

만약 ECS + EC2의 조합이라면 그냥 같은 인스턴스 유형으로 비교할 때 EC2만 쓰는거에 비해 조금 더 비용이 나온다고 한다. 

따라서, 대규모 트래픽의 경우에 EC2를 사용하는 것이 더 경제적이고, 트래픽이 적으면 사용한 만큼 비용이 발생하는 ECS를 사용하는 것이 좋아 보인다.

 

성능 비교

마지막으로는 성능의 관점인데, 다음 글을 참고하면 좋을 것 같다. EC2이 ECS보다 성능이 조금 더 뛰어나다고 한다.
https://filia-aleks.medium.com/ec2-versus-fargate-performance-comparison-34b1002fbbaa

 

EC2 versus Fargate: performance comparison

Nowadays, Fargate is very popular. It solves such ECS with EC2 problems as:

filia-aleks.medium.com

 

마무리

결과적으로, 어떤 형태의 서비스를 개발하고 트래픽이 많느냐 적느냐, 개발을 편하게 할 것이냐 귀찮으나 유연성을 택할것인 가 에서의 선택인 거 같다.
아직은 EC2가 오랜시간 서비스를 제공해왔기에 ECS에 비해 다양한 옵션을 제공하여 이 부분에서는 EC2가 나은 것 같지만, 나중 가서는 ECS도 다양한 옵션을 제공하지 않을까 싶기도 하다.

나라면 비용을 우선적으로 생각할 것 같긴하다. 비즈니스를 만드는 회사에서 AWS 비용을 절감하면 인력 몇명의 비용을 아끼는것과 같은 효과를 가져오니까 회사도 좋아한다.

나중에 나도 새로 서비스를 구축할 때 다시한번 고민해볼 것 같고, 마지막으로 인프랩에서 했던 EC2, ECS와 관련한 글을 구경하며 좋을 것 같다!


https://tech.inflab.com/20240227-finops-for-startup/

 

스타트업 엔지니어의 AWS 비용 최적화 경험기

인프랩이 어떻게 월 $25,000 넘게 AWS 비용을 절약할 수 있었는지 경험과 노하우를 소개합니다.

tech.inflab.com

 

728x90
반응형