최근 특정 기업의 채용 공고를 보는데 EC2에서 EKS로 넘어갔다고 했다. 나는 오래 전 AWS에서 EC2를 받아서 사용은 해봤지만 EKS는 처음 들었던 단어였기에 생소해서 AI에게 물어보았다. Docker는 조금 다른 개념이긴 하지만 그래도 내 생각으로는 EC는 클라우드 VM과 같은 존재여서 같이 껴넣어서 비교해달라고 했다. 답변을 보고 EKS로 넘어갔다는 것은 그 기업은 EC2를 활용한 인프라에서 쿠버네티스 위에 인프라를 구축했다는 의미라는 것을 알게 되었다.

1. EC2 (Elastic Compute Cloud)

개요

  • AWS가 제공하는 가상 서버.
  • 사용자가 OS, 소프트웨어, 네트워크 등 모든 것을 직접 설정 및 관리.

특징

  • 유연성: 완전한 서버 접근 권한. 원하는 대로 OS와 애플리케이션 설치 가능.
  • 관리 부담: 패치, 스케일링, 장애 복구 등 모든 관리를 직접 해야 함.
  • 운영 방식: 전통적인 서버 기반으로, 애플리케이션이 컨테이너화되지 않아도 동작.

장점

  • 높은 커스터마이징 가능성.
  • 다양한 워크로드 처리 가능 (웹 서버, DB 서버 등).
  • 간단한 소규모 프로젝트에 적합.

단점

  • 관리 복잡도 증가.
  • 리소스 활용 비효율 가능 (서버 과잉 또는 부족).

2. Docker

개요

  • 컨테이너화 기술로, 애플리케이션과 필요한 환경을 패키징하여 독립적으로 실행.
  • Docker 자체는 AWS 서비스가 아니라 컨테이너화 도구이며, AWS에서는 EC2나 EKS 같은 서비스를 통해 실행.

특징

  • 이식성: 컨테이너는 어디서나 동일하게 실행.
  • 경량화: 가상머신(VM)보다 리소스 사용이 적음.
  • EC2, ECS, EKS 같은 서비스에서 컨테이너를 실행할 수 있음.

장점

  • 환경 독립성: 개발 환경과 운영 환경 차이를 최소화.
  • 빠른 배포 및 스케일링.
  • 인프라 활용 효율성 증가.

단점

  • 컨테이너 환경 관리 필요.
  • 단독으로는 클러스터링이나 확장 기능 부족 (ECS/EKS와 결합 필요).

3. EKS (Elastic Kubernetes Service)

개요

  • AWS의 쿠버네티스(Kubernetes) 관리 서비스.
  • 컨테이너화된 애플리케이션을 관리하고 확장하며 배포하는 데 사용.

특징

  • 자동화: 스케일링, 배포, 로드 밸런싱 등 컨테이너 클러스터 관리 자동화.
  • 복잡성: EC2나 Docker보다 초기 설정과 운영이 복잡할 수 있음.
  • 관리형 서비스: AWS가 쿠버네티스의 제어 플레인을 관리하므로 일부 부담 완화.

장점

  • 고가용성과 자동화된 스케일링.
  • 복잡한 멀티컨테이너 애플리케이션 배포에 적합.
  • 클러스터 환경에서 리소스를 효율적으로 운영 가능.

단점

  • 러닝 커브가 있음 (쿠버네티스 이해 필요).
  • 소규모 프로젝트에는 과도한 솔루션일 수 있음.

4. 주요 차이점

기능/특징EC2Docker (단독)EKS

운영 방식 전통적인 서버 기반 컨테이너 기반 컨테이너 클러스터 기반
관리 범위 사용자 전담 (OS, 서버 등) 컨테이너 이미지 관리 필요 AWS가 제어 플레인 관리
자동화 수준 낮음 제한적 (컨테이너 스케줄링 없음) 높음 (스케일링, 로드 밸런싱 자동화)
스케일링 수동 제한적 자동 (노드/컨테이너 수준)
복잡성 낮음 중간 높음
적합한 환경 소규모/전통적 애플리케이션 컨테이너화된 애플리케이션 대규모 분산 애플리케이션

5. 결론

  1. EC2: 서버를 완전히 관리해야 하는 상황에서 사용. 소규모 애플리케이션이나 초기 단계에서 적합.
  2. Docker: 애플리케이션을 컨테이너화하여 이식성을 높이고 싶을 때 사용. 단일 Docker 실행은 EC2나 ECS에서.
  3. EKS: 대규모, 복잡한 컨테이너화 애플리케이션을 효율적으로 관리하고 자동화하려면 사용.

+ Recent posts