본문 바로가기
코딩 공부/Cloud

[AWS] ECS(Elastic Container Service)

by 현장 2024. 4. 27.

ECS(Elastic Container Service)

ECS란 컨테이너 애플리케이션을 쉽게 배포, 관리 및 확대할 수 있도록 도와주는 완전 관리형 컨테이너 오케스트레이션 서비스입니다. 완전 관리형 서비스인 Amazon ECS에는 AWS 구성과 운영 모범 사례가 내장되어 있으며, AWS와 Amazon Elastic Container Registry, Docker 등의 서드 파티 도구와 기반으로 배포 및 운영할 수 있습니다.

컨테이너
소프트웨어 서비스를 실행하는 데 필요한 특정 버전의 프로그래밍 언어 런타임 및 라이브러리와 같은 종속 항목과 애플리케이션 코드를 함께 포함하는 경량 패키지입니다.
컨테이너 오케스트레이션
컨테이너의 배포,관리,확장,네트워킹을 자동화 해주는 유형입니다.

 

이러한 통합을 통해 환경이 아닌 애플리케이션 구축에 더욱 집중할 수 있습니다. 또한 컨트롤 플레인을 관리하는  복잡한 과정 없이 클라우드의 AWS 리전와 온프레미스에서 컨테이너 워크로드를 실행하고 확장할 수 있습니다.

온프레미스
기업의 서버를 클라우드와 같이 '가상의 공간'이 아니라, 자체적으로 보유하고 있는 서버에 직접 설치하고 운영하는 방식
입니다.

🏷️ 구성요소

ECS 구성 요소간 관계

Cluster

ECS의 가장 기본 단위로써 Cluster는 Task 또는 Service의 논리적인 그룹입니다. 기본적으로 컴퓨팅 자원을 포함하지 않으며(텅 빈 Cluster도 생성 가능), ECS에서 컨테이너를 실행시키기 위해서는 Contianer 인스턴스가 Cluster에 포함되어야 합니다.


Cluster는 Container 인스턴스를 조작할 수 있는 권한을 가지고 있으며, Cluster에서 Service나 Task를 실행하면 조건을 만족하는 Container 인스턴스를 찾아 해당 인스턴스 에 컨테이너를 실행합니다.


AWS Fargate(Serverless)를 사용하면 Container 인스턴스 없이 컨테이너를 실행할 수 있습니다.

Service

Service는 Task를 지속적으로 관리하는 단위입니다. Service는 Cluster 내에서 지정된 Task 수만큼 동시에 실행하고 관리할 수 있습니다. 또한 ELB와 연동하여 실행중인 Task를 찾아 자동으로 ELB에 등록 및 제거하는 Auto Scaling 역할도 담당합니다.

✅ Task

Task는 ECS의 최소 실행 단위로 하나 이상의 컨테이너 묶음입니다. Task를 실행하는 방법에는 Task Definition으로 직접 Task를 실행하는 방법과 Service를 정의하는 방법이 있습니다.


Task Definition으로 직접 실행된 Task의 경우 처음 한 번 실행된 이후 관리되지 않습니다.  Task는 Cluster에 속한 Container 인스턴스에 배포됩니다.

✅ Task Definition

Task Definition은 Task를 실행하기 위한 설정을 저장하고 있는 단위로 컨테이너 별로 실행하고자 하는 이미지를 지정할 수 있습니다. 또한 CPU나 Memory와 같은 정보도 지정할 수 있고,  하나 혹은 둘 이상의 Task Definition을 포함할 수 있으며, Task Definition은 Cluster에 종속되어있지 않습니다.

Container Instance

Task가 배포되는(실제 Docker 컨테이너가 실행되는) Cluster에 등록된 EC2 인스턴스를 Container 인스턴스라고 합니다. ECS는 EC2 인스턴스에 ECS Container Agent를 설치하고 Cluster에 Container 인스턴스로 등록할 수 있습니다.


하나의 Cluster에 여러 개의 Container 인스턴스가 있을 수 있으며, 하나의 Container 인스턴스안에서도 여러개의 Task가 있을 수 있습니다.

📖 Reference

AWS

만자의 개발일지