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에 대한 요금 정보
관련 서비스 (Related services)
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 공식 개발자 가이드의 관련 문서를 참고하세요.