Amazon Elastic Container Service란 무엇인가요?

Amazon Elastic Container Service란 무엇인가요?

Amazon ECS(Amazon Elastic Container Service)는 컨테이너화된 애플리케이션을 쉽게 배포·관리·확장할 수 있게 해주는 완전 관리형 컨테이너 오케스트레이션 서비스입니다. 이 글에서는 Amazon ECS의 핵심 개념과 구성 요소에 대해 알아봅니다.

출처: 문서

본문

Amazon ECS(Amazon Elastic Container Service)는 컨테이너화된 애플리케이션을 쉽게 배포하고, 관리하고, 확장할 수 있게 해주는 완전 관리형(fully managed) 컨테이너 오케스트레이션 서비스입니다. 완전 관리형 서비스인 만큼 AWS의 구성 및 운영 모범 사례가 기본으로 내장되어 있어요. 또한 Amazon Elastic Container Registry 같은 AWS 도구뿐 아니라 Docker 같은 서드파티 도구와도 통합되어 있습니다. 이런 통합 덕분에 팀은 환경을 관리하느라 시간을 쓰는 대신 애플리케이션을 만드는 데 집중할 수 있어요. 컨테이너 워크로드를 AWS 리전(Region)의 클라우드와 온프레미스(on-premises) 어디에서든 실행하고 확장할 수 있으며, 컨트롤 플레인(control plane)을 직접 관리할 필요가 없습니다.

용어와 구성 요소 (Terminology and components)

Amazon ECS에는 세 가지 계층(layer)이 있습니다:

  • Capacity — 컨테이너가 실행되는 인프라
  • Controller — 컨테이너에서 실행되는 애플리케이션을 배포하고 관리
  • Provisioning — 스케줄러와 상호작용하여 애플리케이션과 컨테이너를 배포·관리할 때 사용하는 도구

다음 다이어그램은 Amazon ECS의 계층을 보여줍니다.

capacity는 컨테이너가 실행되는 인프라를 말합니다. capacity 옵션에 대한 개요는 다음과 같습니다:

  • Amazon ECS Managed Instances — Amazon ECS의 컴퓨트 옵션으로, 다양한 Amazon EC2 인스턴스 유형에서 컨테이너화된 워크로드를 실행하면서 인프라 관리는 AWS에 맡길 수 있게 해줍니다. Amazon ECS Managed Instances를 사용하면 GPU 가속, 특정 CPU 아키텍처, 높은 네트워크 성능, 특수 인스턴스 유형 같은 특정 컴퓨트 능력을 이용할 수 있고, 기본 인프라의 프로비저닝·패치·확장·유지보수는 AWS가 처리합니다.
  • AWS 클라우드의 Amazon EC2 인스턴스 — 인스턴스 유형과 인스턴스 수를 직접 선택하고 capacity를 관리합니다.
  • AWS 클라우드의 서버리스(Serverless)
    • Fargate — 서버리스, 사용한 만큼 지불하는(pay-as-you-go) 컴퓨트 엔진입니다. Fargate를 사용하면 서버를 관리하거나, capacity를 계획하거나, 보안을 위해 컨테이너 워크로드를 분리할 필요가 없어요.
  • 온프레미스 가상 머신(VM) 또는 서버 — Amazon ECS Anywhere는 온프레미스 서버나 가상 머신(VM) 같은 외부 인스턴스를 Amazon ECS 클러스터에 등록할 수 있게 지원합니다.

Amazon ECS 스케줄러(scheduler)는 애플리케이션을 관리하는 소프트웨어입니다.

기능 (Features)

Amazon ECS는 다음과 같은 고수준의 기능을 제공합니다:

  • Task definition — 애플리케이션의 청사진(blueprint)
  • Cluster — 애플리케이션이 실행되는 인프라
  • Task — 배치 작업처럼 작업을 수행한 다음 종료되는 애플리케이션
  • Service — 오래 실행되는 무상태(stateless) 애플리케이션
  • Account Setting — 기능에 대한 접근을 허용
  • Cluster Auto Scaling — Amazon ECS가 클러스터에 등록된 Amazon EC2 인스턴스의 확장을 관리
  • Service Auto Scaling — Amazon ECS가 서비스의 desired task 수를 자동으로 늘리거나 줄임

프로비저닝 (Provisioning)

Amazon ECS를 프로비저닝하는 방법은 여러 가지가 있습니다:

  • AWS Management Console — Amazon ECS 리소스에 접근할 수 있는 웹 인터페이스를 제공합니다.
  • AWS Command Line Interface (AWS CLI) — Amazon ECS를 포함한 광범위한 AWS 서비스에 대한 명령을 제공합니다. Windows, Mac, Linux를 지원하며, 자세한 내용은 AWS Command Line Interface 문서를 참고하세요.
  • AWS SDKs — 언어별 API를 제공하고 서명 계산, 요청 재시도 처리, 오류 처리 등 많은 연결 세부 사항을 처리해 줍니다. 자세한 내용은 AWS SDKs 문서를 참고하세요.
  • AWS CDK — 익숙한 프로그래밍 언어로 클라우드 애플리케이션 리소스를 모델링하고 프로비저닝할 수 있게 해주는 오픈소스 소프트웨어 개발 프레임워크입니다. AWS CDK는 AWS CloudFormation을 통해 리소스를 안전하고 반복 가능한 방식으로 프로비저닝합니다.

요금 (Pricing)

Amazon ECS 요금은 컨테이너에 선택한 capacity 옵션에 따라 달라집니다.

  • Amazon ECS pricing — Amazon ECS에 대한 요금 정보
  • AWS Fargate pricing — Fargate에 대한 요금 정보

Amazon ECS와 함께 사용할 수 있는 서비스는 다음과 같습니다:

  • Amazon EC2 Auto Scaling — 애플리케이션의 부하를 처리하기에 충분한 수의 Amazon EC2 인스턴스를 확보할 수 있게 도와줍니다.
  • Amazon CloudWatch — 서비스와 태스크를 모니터링합니다.
  • Amazon Elastic Container Registry — 컨테이너 이미지를 저장하고 관리합니다.
  • Elastic Load Balancing — 들어오는 서비스 트래픽을 자동으로 분산합니다.
  • Amazon GuardDuty — 컨테이너 인스턴스와 워크로드의 잠재적인 무단 또는 악의적 사용을 탐지합니다.

더 알아보기 (Learn more)

  • Amazon ECS 시작하기 및 AWS Fargate 사용 방법을 더 알고 싶다면 AWS 공식 개발자 가이드의 관련 문서를 참고하세요.