본문 바로가기
Dev/AWS

ECS(Elastic Container Service) 기본 개념

by ssyoni 2022. 8. 28.
반응형

최근에 모듈화 된 애플리케이션들을 Docker로 컨테이너화 하여 ECS를 통해 배포 작업을 맡아서 해보았는데 배포하기까지 정말 많은 삽질을 하였다.  어찌어찌 결국 첫 배포 성공 기념으로 ECS 기본 개념을 간략하게 정리해보고자 한다. 

 

ECS란?

AWS에서 제공하는 컨테이너 관리 서비스. 컨테이너화 된 애플리케이션의 배포 및 관리를 도와주는 완전 관리형 컨테이너 오케스트레이션 서비스이다. EC2, Fargate 유형중 하나를 선택할 수 있다. 

컨테이너 오케스트레이션 서비스는 ECS외에도 Docker Swarm, k8s, Nomad 등 다양한 오케스트레이션들이 존재한다. 

그중 ECS서비스는 클러스터를 관리를 위한 추가적인 별도의 인스턴스 구성이 필요 없고, 클러스터에 대한 추가적인 비용도 없다. 

또한 AWS의 다른 서비스들과도 연동 지원이 되기 때문에 손쉽게 구성할 수 있다는 장점이 있다. 

 

 

관련 AWS 서비스들

AWS에서 제공하는 ECS를 사용하는데 관련된 다른 AWS 서비스들을 간략하게 알아보자.

  • AWS ECR(Elastic Container Registry)
    • 컨테이너 이미지들을 저장하는 장소. 이미지 URI를 이용해 빌드한 이미지를 푸시하고 가져올 수 있다.
  • AWS Fargate
    • 종량제 서버리스 컴퓨팅 엔진
  • AWS Load Balancer
    • 트래픽 분산 관리 해주는 로드 밸런서 서비스.
  • AWS VPC
    • ECS 사용에 필요한 네트워크 리소스를 제공한다.
  • AWS IAM
    • AWS 작업의 권한을 설정하는 서비스
  • AWS Cloud Watch
    • 로그 서비스

 

 

ECS 주요 항목들

  • Task Definition
  • Task
  • Container Instance
  • Service
  • Cluster

 

#Task Defination

  • Task를 정의한 작업 정의. 
  • ECS를 사용하기 전에 작업 정의(Task Defination)를 생성해야 한다.
  • 컨테이너를 설명하는 Json 파일
    • 컨테이너 이미지 선택
    • 시작 유형 호환성 선택 (Fargate, EC2, External) → 클러스터와 호환
    • 컨테이너 환경변수 입력
    • 컨테이너 로그 구성
    • 컨테이너 CPU, 메모리 리소스 할당 설정
    • 어플리케이션 개방 포트 설정
    • 데이터 볼륨 설정
    • 등….
  • Task Definition을 클러스터의 Service와 연결하면 Service에서 관리하는 컨테이너가 작업 정의에 정의된 대로 운영된다.

 

#Task

  • 작업 정의(Task Definition)에 설정한대로 인스턴스화 하는 것
  • 컨테이너를 실행하는 최소 단위이며 컨테이너는 하나 이상일 수 있다. docker-compose 같은 개념

 

#Cluster

  • 클러스터에 배포된 Docker Container가 실행될 수 있는 논리적 공간이다.
  • 도커가 설치된 컨테이너 인스턴스들을 목적에 따라 하나로 묶어주는 역할을 한다. 
  • ECS Container Agent : 컨테이너 인스턴스를 클러스터에 연결시키고 명령을 전달 및 오케스트레이션 할 수 있게 해 준다.  ECS 서비스에서의 오케스트레이션이 가능하게 해주는 역할. 

 

#Service

ECS Cluster의 최소 실행단위인 Task를 실행하는 방식은 1. Task Definition을 이용한 실행  2. Service을 이용한 실행  두 가지 방식이 있다. 

1.Task Definition을 이용해서 직접 Task를 실행하면 ELB Autoscaling과 같은 AWS에서 제공하는 다른 서비스를 사용할 수 없고 Task에 대한 관리가 되지 않기 때문에 잘 사용하지 않는다. 

Service를 사용하면 Task에 대한 길행 유형과 배포방식 등을 설정하여 Task를 관리하고 실행할 수 있도록 도와준다. 

  • 클러스터에서 지정된 Task 수의 작업을 동시에 실행하고 관리할 수 있게 해 준다.
  • 서비스는 Task를 포함하며 그와 관련된 Auto Scaling, Load Balancing을 관리한다.
  • 컨테이너의 개수를 정의하면 ECS가 컨테이너의 오케스트레이션을 처리한다.
  • 서비스를 인터넷에 공개하려면 서비스 요청을 전달하기 위한 로드밸런서(Application Load Balancer)를 설정해야 한다.
  • 구성 항목들
    • 시작 유형 선택(Fargate, EC2, External)
    • Task Definition 선택
    • 클러스터 선택
    • 서비스 이름 설정
    • 작업 개수 설정
    • 배포 유형(Rolling, Blue Green)
    • 네트워크 구성(VPC, Subnet, Security Group)
    • Load Balancing 설정
    • AutoScaling 설정

 

 

 

 

 

 

 

https://aws.amazon.com/ko/getting-started/guides/deploy-webapp-ecs/module-one/

 

Amazon ECS 기반 컨테이너 웹 애플리케이션 배포 | 모듈 1

피드백을 제공해 주셔서 감사합니다. 이 페이지가 도움이 되지 못해 죄송합니다. 지속적인 개선에 도움이 되는 추가 세부 정보를 공유해 주시겠습니까?

aws.amazon.com

https://boostbrothers.github.io/technology/2020/01/29/AWS-ECS-살펴보기/

 

AWS ECS 살펴보기 | 비브로스 기술 블로그

안녕하세요. 접수/예약 서비스 개발 및 인프라를 담당하고 있는 백엔드팀 안정민 입니다. 저희 똑닥에서 현재 일부 서비스를 제외하고 주로 사용 중인 AWS의 컨테이너 오케스트레이션 서비스 ECS(

boostbrothers.github.io

https://tech.cloud.nongshim.co.kr/2021/08/30/소개-amazon-ecs란/

 

[소개] Amazon ECS란?

Amazon ECS(Elastic Container Service) 란? 클러스터에서 컨테이너를 쉽게 실행, 중지 및 관리할 수 있게 해주는 컨테이너 관리 서비스 입니다.간단한 API 호출을 사용하여 컨테이너 기반 애플리케이션을

tech.cloud.nongshim.co.kr

 

반응형

댓글