더 많은 도움을 드리기 위해

열심히 포스팅 중입니다!


지나가다 📢 광고 한 번 눌러주시면

더 좋은 글로 보답하겠습니다. 🥰

기술 면접 준비

AWS와 컨테이너 (ECR, EC2, Fargate, ECS, EKS) - 기술 면접 준비

평비 - Giveloper 2025. 6. 5. 12:35

 

👋 

안녕하세요~ 평비입니다!

오늘은 AWS와 컨테이너에 대한 주제로써, AWS에서 사용되는 서비스인 ECR, EC2, Fargate, ECS, EKS에 대해서 나름(?) 자세하게 준비한 포스팅을 준비해봤습니다!

 

💡 ECR (Elastic Container Registry)

컨테이너 이미지를 손쉽게 저장, 관리 및 배포할 수 있게 해주는 완전 관리형 컨테이너 이미지 레지스트리

ECR에 저장된 이미지를 바탕으로 컨테이너를 생성하고, 이것을 ECS, EKS에서 컨트롤하는 형태로 활용

 

특징

  • AWS Code Deploy, Code Pipeline과 연계 가능 (AWS의 다른 개발 도구들과의 통합이 용이)
  • 라이프 사이클 정책을 통해 이미지의 수명 주기를 관리 가능 (예: 90일 이상 된 이미지 삭제, 최신 5개 이미지만 남기기 등)
  • 사용되지 않는 이미지 정리 규칙을 정리하여 적용 가능
  • 푸시된 이미지에 대해 CVE(Common Vulnerabilities and Exposures) 데이터베이스를 기반으로 취약점을 자동으로 스캔
  • 교차 리전 및 교차 계정 복제를 통해 이미지를 필요한 곳에 쉽게 배치하여 이미지의 가용성과 배포 속도를 향상 가능

 

 

💡 EC2 (Elastic Computing Cloud = 인스턴스)

한 줄 요약 : AWS 클라우드에서 제공하는 가상 서버

AWS의 핵심 IaaS 서비스로, 사용자가 Amazon의 데이터 센터에서 가상 머신(VM)을 생성하고 관리할 수 있다.

 

특징

  • 사용자는 인스턴스의 운영체제, CPU, 메모리, 스토리지 등을 직접 선택하고 제어
  • 오토 스케일링(Auto Scaling) 기능을 통해 자동으로 인스턴스 수를 조절
  • 독립된 환경 + 운영체를 갖고 있는 컴퓨팅 리소스
  • 사용한 만큼만 비용을 지불하는 종량제 모델로, 초기 인프라 투자 부담 감소
  • 비용: t2.micro - 1vCPU, 1GB 메모리 기준 시간당 $0.0144

 

 

💡 Fargate?

한 줄 요약 : 서버 관리 없이 컨테이너만 실행할 수 있는 완전 관리형 서비스

EC2 인스턴스를 직접 프로비저닝하거나 관리할 필요 없이, 컨테이너화된 애플리케이션을 실행하고 관리할 수 있게 해주는 서버리스(Serverless) 컴퓨팅 엔진

 

특징

  • 별도의 물리적인 서버 혹은 EC2와 같은 가상화 서버를 직접 관리할 필요가 전혀 없음
  • 컨테이너가 사용하는 CPU 및 메모리 리소스에 대해서만 과금 (초단위 과금)
  • Fargate 단독으로는 컨테이너를 직접 실행할 수 없으며, 반드시 ECS 또는 EKS 클러스터를 통해 컨테이너 워크로드를 배포해야 함
  • 예를 들어, 컨테이너 이미지가 ECR과 같은 레포지토리에 업로드 되어 있다면, ECS 또는 EKS 클러스터에서 Fargate를 컴퓨팅 타입으로 선택하여, 손쉽게 24시간 서비스 가능한 애플리케이션을 기동할 수 있습니다.

 

 

💡 ECS (Elastic Container Service)

한 줄 요약 : 쿠버네티스를 사용하지 않는, AWS의 완전 관리형 컨테이너 오케스트레이션 서비스

컨테이너화된 애플리케이션을 손쉽게 배포, 관리 및 크기 조정을 지원하는 AWS의 독자적인 컨테이너 오케스트레이션 서비스

 

특징

  • 컨테이너 기반의 애플리케이션을 신속하게 시작, 중지 및 관리하며, 트래픽 변화에 따라 유연하게 확장
  • 쿠버네티스보다 학습 곡선이 완만하며, AWS의 다른 서비스(VPC, IAM, CloudWatch, ELB 등)와의 통합이 매우 자연스럽고 간편
  • AWS 클라우드 환경에서만 제공
  • ECS 클러스터 운용에 대한 자체 과금은 없으며, 클러스터 내에서 사용되는 컴퓨팅 리소스(EC2 or Fargate)에 대해서만 과금
  • AWS에서 새롭고 혁신적인 컨테이너 관련 기능이 출시될 때, ECS에서 먼저 지원되고 통합되는 경향

 

 

💡 EKS (Elastic Kubernetes Service)

한 줄 요약 : 쿠버네티스 클러스터 관리를 AWS가 대신해주는, AWS의 완전 관리형 쿠버네티스 서비스

사용자가 직접 쿠버네티스 컨트롤 플레인(마스터 노드)을 구성하고 관리하는 복잡한 과정 없이, AWS 환경에서 표준 쿠버네티스를 손쉽게 배포하고 운영할 수 있도록 편리함을 제공하는 서비스

 

특징

  • 쿠버네티스 컨트롤 플레인(API 서버, 스케줄러, 컨트롤러 매니저, etcd 등)의 고가용성, 보안 패치, 업그레이드 등을 AWS가 자동으로 관리
  • AWS의 핵심 서비스인 ALB, IAM, CloudWatch 등과 긴밀하게 통합
  • AWS의 강력한 인프라 및 보안 기능을 쿠버네티스 환경에서 손쉽게 활용
  • 순수 쿠버네티스와 완벽하게 호환되므로, 쿠버네티스의 벤더 중립성으로 인해, EKS <-> 다른 환경으로 쉽게 마이그레이션 가능
  • 쿠버네티스 생태계의 풍부한 오픈 소스 도구와 확장 기능을 활용 가능
  • 복잡한 마이크로서비스 아키텍처나 특정 요구사항에 맞는 맞춤형 오케스트레이션(예: CRD/Operator 활용) 구현에 유리
  • ECS에 비해 쿠버네티스 자체에 대한 이해가 필요하므로, 초기 학습 곡선과 운영 복잡성이 다소 높음
  • 쿠버네티스 클러스터 운용 비용이 과금 (시간당 $0.1)
  • 워커 노드(EC2 또는 Fargate)의 비용은 별도

 

활용 가능한 기능들

  • 컨테이너 예약 - Pod가 배포될 노드에 자원(CPU, Memory 등)을 예약하거나, 특정 조건을 기반으로 최적의 노드에 Pod를 스케줄링
  • 애플리케이션 가용성 관리 - Replica 수 유지, 자가 치유(Self-healing), 롤링 업데이트, 롤백 등 다양한 전략을 통해 애플리케이션의 안정적인 동작과 높은 가용성을 보장
  • 클러스터 데이터 저장 - 클러스터 관련 메타데이터, 로그, 현재 상태 정보 등을 저장하여 클러스터의 일관된 상태를 유지

 

1. EC2 vs Fargate

한 줄 요약 : VM을 직접 관리할 것이냐, AWS에 VM 관리를 맡길 것이냐

비유 : EC2는 자가용, Fargate는 택시

 

ECS/EKS 클러스터를 생성할 때, 실제로 컨테이너를 실행할 컴퓨팅 인프라를 EC2 또는 Fargate 중 어디에 올려 사용할지 선택할 수 있습니다.

  • EC2를 선택하면, 사용자가 VM의 프로비저닝, 패치, 스케일링, 보안 업데이트 등 EC2 인스턴스 자원 관리를 직접 수행해야 합니다. 이는 더 세밀한 제어와 최적화가 가능하지만, 관리 오버헤드가 발생합니다.
  • Fargate를 선택하면, 이러한 인프라 관리 부담을 모두 AWS가 수행하며, 사용자는 컨테이너 이미지와 필요한 리소스(CPU, 메모리)만 정의하면 됩니다. 다만, EC2에 비해 단위 리소스당 비용이 더 비쌉니다.

 

비용 비교

EC2 : t2.micro - 1vCPU, 1GB 메모리 기준 시간당 $0.0144

Fargate : 1vCPU, 1GB 메모리 기준 시간당 $0.05167 (EC2의 3.5배)

 

결론

지속적으로 서버가 켜져 있어야 하며 비용 최적화가 중요한 상황이라면, 시간당 비용이 적고 세밀한 제어가 가능한 EC2를 사용합니다.

태스크 단위로 짧게 컨테이너를 실행했다가 바로 종료하는 배치성 작업이나, 인프라 관리 부담을 최소화하고자 하는 상황이라면, Fargate가 더 적합합니다. EC2 노드일 경우 서버 기동/중단에 대한 수동 또는 복잡한 자동화 작업이 필요하지만, Fargate는 이러한 번거로움 없이 컨테이너 실행 시간만큼만 과금되어 편리합니다.

 

2. ECS vs EKS

한 줄 요약 : 쿠버네티스를 사용할 것이냐, 사용하지 않을 것이냐

 

두 서비스 모두 컨테이너화된 애플리케이션의 배포, 관리 및 크기 조정을 돕는 컨테이너 오케스트레이션 서비스라는 공통점을 가지고 있습니다.

EKS는 AWS에서 k8s 환경을 제공하는 서비스로 구성이 ECS에 비해 복잡하고 비용도 ECS에 비해 비싸지만, k8s가 제공하는 다양한 기능을 사용할 수 있고, 다른 k8s 기반 플랫폼으로의 이식성이 좋습니다.

ECS는 완전 관리형 오케스트레이션 서비스로써 EKS에 비해 구성이 간단하고 비용이 저렴한 대신, AWS에서만 제공하는 서비스이므로 타 플랫폼으로의 이식성이 떨어집니다.

 

3. 최종 결론

ECS, EKS는 AWS에서 제공하는 컨테이너를 관리하는 서비스이며,

EC2, Fargate는 ECS / EKS 클러스터에서 서비스가 올라갈 VM을 누가 관리할 지에 대한 선택지입니다.

 

각자 컨트롤하는 수준 및 이식성 등의 차이가 있으므로, 주어진 상황에 맞춰 적절한 제품을 고르는 것이 중요합니다.

또한, 어떤 플랫폼에서 어떤 서비스를 사용하든 비용을 계속 체크하면서 써야 하는 것이 클라우드이므로, 각 프로젝트 또는 서비스의 요구상항/규모/환경(개발자의 수준, 외부 협력의 필요성 등 포함)에 적합한 수준에서의 서비스 사용이 매우 중요합니다.

 

 

 

👏

 

자, 이렇게 AWS에서 사용되는 컴퓨팅 리소스와 컨테이너 오케스트레이션 서비스에 대해서 다뤄봤습니다!
여러분들은 어떤 서비스를 활용하고 싶으신가요?
 
평비의 이 평범한 글이 여러분에게 비범한 도움이 되었으면 좋겠습니다 👍