본문 바로가기
IT 서비스/모임 관리 플랫폼

ECR, ECS가 뭐길래 선택하였는가

by agong이 2025. 5. 1.

서론

이번 글은 저희가 배포환경을 ECR, ECS로 결정하게 된 이유와 여러가지 특징을 작성하려고 합니다.

 

 

ECR (Elastic Container Registry) 이란?

 

ECR은 Container Registry입니다. 쉽게 생각하면 Docker Hub라고 생각하시면 됩니다.

차이점은 다음과 같습니다.

1. AWS 내부 통신으로 더 빠름 

2. ECS등에 연결할 때 IAM 인증 기반을 사용 가능

즉 AWS 내 통합성, 네트워크 성능, 보안성 측면에서 다른 AWS 서비스와 활용한다면 더 좋습니다.

 

다만, 저희는 비용 때문에 Public으로 진행했습니다.(public은 월 50GB무료). 그럼에도 나중에 쉽게 바꾸기도 가능해서 aws의 ecs를 사용한다면 좋은 선택지 인것 같습니다.

 

ECS (Elastic Container Service)

ECS는 완전 관리형 컨테이너 오케스트레이션 서비스입니다.
다양한 오케스트레이션 서비스가 있으며 ECS 의 경우는 AWS 에서 자체 개발한 서비스입니다. 

그렇다보니 다양한 AWS 기능과 통합이 쉽고 다른 서비스에 비해서 쉽게 적용이 가능합니다. (하지만 비쌉니다..)

 

ECS가 지원해주는 주요 기능 및 장점은 다음과 같습니다.

 

1. 컨테이너 오케스트레이션

- Docker 컨테이너를 클러스터 단위로 자동 배치, 스케줄링을 해줍니다.

- CPU, 메모리 리소스 기반으로 최적의 위치에 컨테이너를 올려줍니다.

 

2. 오토 스케일링

- 서비스 트래픽에 따라 컨테이너 수를 자동으로 늘리거나 줄임.

- EC2 인스턴스 기반 또는 AWS가 관리하는 서버리스 Fargate 기반 (ECS Fargate) 모두 가능

 

3. 기존의 AWS 서비스를 잘 결합해서 컨테이너 배포에 맞도록 서비스를 만들었기 때문에 손쉽게 배포 및 운영이 가능합니다.

더보기

FARGAtTE VS EC2

  • FARGATE: 컨테이너에 적합한 서버리스 엔진 으로 ECS 및 EKS 에 사용할 수 있으며 서버를 관리 할 필요 없이 어플리케이션 별로 리소스를 지정하여 관리 비용을 지불하는 방식으로 앱에 집중하여 인프라가 아닌 어플리케이션을 배포 관리 할수 있다.
    • Lambda 와 매우 유사한데, AWS 에 가지고 있는 Fargate Pool 에서 하나를 가지고와서 도커 이미지를 실행한다. Lambda 처럼 초당 과금이지만 상대적으로 비싸다. 그리고 프리티어 대상도 아니다.
  • EC2: EC2 컨테이너 인스턴스를 연결하여 ECS 서비스 구성하기 때문에 위의 FARGATE 보다 비용을 저렴하나 설정이 복잡하고 인프라 확장이 Farget 에 비해서 적다.
  • 비교
    • EC2 
      • 커스터 마이징이 자유로움
      • 비용 최적화 가능
      • EC2 인스턴스 단위 과금
    • Fargate
      • 서버 관리가 간단함
      • 자동 스케일링 간단함
      • 인스턴스 업싱 빠른 배포가 간으함
      • CPU와 메모리 리소스 사용량 단위 과금 (초단위) / 요금이 더 비쌈

저희가 ECS + Fargate를 사용한 경우는 다음과 같습니다.

  • 단순하고 쉽게 운영하여 서비스를 관리 할 수 있습니다.
  • 배포 및 관리의 간단함 및 편리성
  • AWS 내부 서비스과의 연동성
  • 지속적인 트래픽이 발생하지 않고 소규모 트래픽이 발생하기 때문에 Fargate를 사용하는것이 EC2와 비용에 큰 차이가 없음.

선택지에 EKS도 고려해보았지만 러닝커브가 높고 저희팀은 k8s에 대한 지식이 부족하여 비용이 더 비쌈에도 k8s의 장점을 살리면서 운용하지 못할 가능성이 크기 때문에 선택하지 않았습니다.

 

또한 저희는 서비스환경이 아닌 dev환경이므로 FAGATE SPOT을 사용하여 정가 대비 최대 70% 할인된 가격으로 서비스를 이용하여 비용 최적화를 하였습니다.

 

마무리

대부분은 공식문서 또는 블로그를 따라하면 쉽게 진행되었습니다.. 하지만 Eureka와 ECS Fargate를 사용하면서 발생한 문제를 해결하는데 시간이 다소 소요되었습니다. 다음 글에서는 이러한 트러블 슈팅 과정에 대해 작성해보겠습니다.

 

참고

- https://velog.io/@dnflekf2748/AWS-ECS%EB%A5%BC-ECR%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%B0%B0%ED%8F%AC-%EC%9E%90%EB%8F%99%ED%99%94-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0

- https://velog.io/@tanggu01/%EB%B0%8D%EA%B8%80-ECS-vs-EKS-EC2-vs-Fargate-%EB%B0%B0%ED%8F%AC-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%B9%84%EA%B5%90%ED%95%B4%EB%B3%B4%EA%B8%B0

- https://velog.io/@xgro/fargatespot

댓글