ECS(Elastic Container Service)란?

Oneik·2024년 10월 25일
0
post-thumbnail

ECS(Elastic Container Service)란?

ECS는 컨테이너화된 애플리케이션을 쉽게 배포, 관리 및 확장할 수 있게 해주는 완전관리형 컨테이너 오케스트레이션 서비스입니다.

쉽게 말하자면, 개발자는 애플리케이션 코드를 Docker 이미지로 만들어서 ECS에 올리기만 하면 컨테이너 운영에 필요한 복잡한 작업들(컨테이너 생성, 종료, 복제, 로드 밸런싱, 장애 복구 등)을 ECS가 자동으로 처리해줍니다.

특히 Fargate를 사용하면 서버 관리도 신경 쓸 필요 없이, 필요한 만큼만 리소스를 사용하고 그만큼의 비용만 지불하면 됩니다.

ECS를 선택한 이유

처음에는 AWS Lightsail을 사용하여 서비스를 배포하려 했습니다. Lightsail은 간단한 웹 애플리케이션을 배포하기에는 적합하지만, 다음과 같은 제한사항들이 존재합니다:

  1. 인스턴스 수를 수동으로 관리해야 하고, 기본적인 자동 스케일링이 제공되지 않습니다.
  2. 트래픽이 갑자기 증가할 경우 개발자가 직접 인스턴스를 추가해야 하기 때문에 즉각적인 대응이 어렵습니다.
  3. 서비스 장애 발생 시 수동으로 대응해야 하며, 자동 복구 시스템이 존재하지 않습니다.
  4. 복잡한 배포 전략(블루/그린 배포, 롤링 업데이트 등)을 구현하기 어렵습니다.

이러한 한계들이 존재하여 이를 극복하기 위해 ECS를 선택하게 되었습니다. ECS는 자동 스케일링, 장애 복구, 다양한 배포 전략을 기본적으로 지원하며, AWS의 다른 서비스들과도 긴밀하게 통합되어 있습니다.

ECS 구성 요소

Task Definition

Task Definition은 컨테이너를 실행하기 위해 정의한 명세서입니다. 어떤 도커 이미지를 사용할지, CPU/메모리 할당량, 환경 변수, 네트워크 설정, 볼륨 마운트 등 컨테이너 실행에 필요한 설정을 정의합니다. 이를 기반으로 실제 동작하는 컨테이너 인스턴스가 바로 Task입니다.

Service

Service는 Task들의 수명주기를 관리합니다. 예를 들어, 특정 Task가 죽으면 자동으로 새로운 Task를 생성하여 지정된 개수를 유지합니다. 또한 ALB(Application Load Balancer)와 연동하여 트래픽을 분산시킬 수 있으며, CPU 사용량이나 메모리 사용량에 따른 자동 스케일링도 설정할 수 있습니다.

Cluster

Task와 Service가 실행되는 논리적 그룹입니다. 수많은 컨테이너들을 개별적으로 관리하는 것은 매우 복잡하고 비효율적이므로 이들을 하나의 단위로 묶어서 관리할 필요가 있습니다. ECS Cluster는 이러한 목적으로 생성된 컨테이너들의 하나의 그룹이며, 이를 통해 리소스를 관리, 모니터링, 보안 설정 등을 수행할 수 있습니다.

마무리

지금까지 ECS란 무엇이고 왜 ECS를 선택하게 되었는지, 그리고 ECS의 주요 구성 요소들에 대해 알아보았습니다. 다음 글에서는 프로젝트의 인프라 아키텍처를 어떻게 구성했는지 간단하게 소개해보겠습니다.

profile
초보 개발자의 블로그입니다

0개의 댓글

관련 채용 정보