안녕하세요 😊😊😊😊
이번 포스팅에서는 ECS에 대해 조금 다뤄보려고 합니다.
정말 다양한 컨테이너 오케이스트레이션 툴이 존재하고, 최근에는 Kubernetes(k8s)가 거의 메인 스트림인데요,
AWS에도 EKS라는 관리형 쿠버네티스 서비스가 있습니다.
하지만, AWS는 EKS보다 ECS(Amazon Elastic Container Service)를 더 밀고있는것 같습니다.
아무튼! 지금부터 ECS에 대해 알아봅시다!!
ECS는 다른 오케스트레이션 툴에 비해 어떤 장점이 있을까요?
1. 개념이 정말 간단하고, (쿠버네티스보다 이해하기 훨씬 쉽습니다.)
2. 다른 AWS서비스와 통합이 간편하고, (예제도 정말 많습니다.)
3. aws Copilot 과 같은 ECS를 위한 전용 CLI가 존재합니다.
물론, AWS에서 사용하기 기준이겠죠! 😁
ECS EC2? Fargate? External? 여러가지가 있던데.... 뭐가 다른가요?
ECS는 컨테이너를 운영하는 호스트 형태에 따라 EC2, Fargate, External 로 나눠집니다.
즉, 어디에서 컨테이너를 띄울건지에 대한 정의 입니다. 이해하기 쉽도록 아래 그림을 봅시다

ECS 호스트 유형 1) EC2
기본 유형인 EC2 유형입니다. 즉, 컨테이너가 운영되는 컴퓨터가 AWS EC2인 타입 입니다.
용량공급자(Capacity Providers)를 통해 EC2 Auto-ScalingGroup을 연결합니다.
ECS에서 제공하는 관리형 지표 "CapacityProviderReservation"에 따라 EC2를 용량을 추가/제거 할 수 있으며,
컨테이너의 숫자의 증가/축소에 따라 EC2도 함께 증가/축소하게 됩니다.
* EC2 유형 비용: 호스트로 사용하는 EC2 요금만 과금됩니다.
ECS 호스트 유형 2) Fargate
Fargate는 서버리스 유형으로, EC2를 배포하거나 관리할 필요 없이 그냥 서비스만 운영하면 되는 유형 입니다.
즉, 컨테이너가 어디서 운영되는지 고민/관리할 필요 없는 타입 입니다.
한가지 문제점은 EC2와 비교했을때 비싸다는것입니다 ㅎㅎ
그래도 Savings Plan 등을 통해 요금을 할인받을 수 있고, EC2에 대한 관리가 필요없으니 장점도 큰것같습니다.😁
* Fargate 유형 비용: 시간당 vCPU, Storage 용량 비용이 부과됩니다. Fargate 요금
ECS 호스트 유형 3) External (ECS AnyWhere)
마지막 유형인데요, Exrernal 인스턴스 타입입니다. 이 유형은 AWS인프라가 아닌 곳에 위치한 호스트에서도 ECS에서 정의한 서비스, 작업을 실핼 할 수 있도록 합니다.
즉, 호스트&컨테이너 등 실제 서비스는 물리적으로 AWS밖에서 동작하지만, 관리는 AWS콘솔에서 할 수 있는 타입 입니다.
다른 데이터센터와 함께 AWS를 운영중해야하는 하이브리드 환경에 적합한 옵션이 될거같네요.
단, 호스트에는 ECS Agnet, SSM Agent 가 설치 되어야 하며, 인터넷연결이 안정적이어야 합니다.
* External 유형 비용: 긱 External 인스턴스마다 시간당 0.01025USD 비용이 부과됩니다. External 요금
ECS는 무엇으로 구성되나요?
제가 생각했을때.. ECS의 핵심 구성요소(컴포넌트)는, 작업정의 & 서비스 입니다. (ECS공식문서)
작업정의 후 서비스만 잘 생성해도 컨테이너 운영이 가능하기 때문입니다. 🤗
아래 그림을 보면서 자세히 확인해볼까요?

ECS를 사용하기 위해서는 가장먼저, 작업정의(Task Definition)을 생성해야합니다.
작업 정의란, 컨테이너를 설명하는 Json 파일입니다. 정의할 수 있는 내용은 아주 많습니다.
(Task 네트워크 모드(Bridge, Host, awsvpc, None)/ 컨테이너 이미지/ 컨테이너에 할당 될 리소스(vCPU/MEM) 등..)
작업정의를 생성했다면, 순서대로 ECS Cluster, ECS Service를 생성합니다.
• ECS Cluster : 네트워크 구성 및 OS를 정의하는 단계입니다. (어떤 VPC를 사용할지, 어떤 OS를 사용할지 (Windows / Linux ))
• ECS Service : 앞서 만들어놓은 작업정의(Task Definition)을 연결하고, Task 수량, Auto-Scaling 여부 등을 설정합니다.
ECS를 생성하고 싶어요, 어떤 순서로 하나요?
아래의 그림 순서대로 진행하여 ECS서비스를 간단히 테스트 해볼 수 있을 것 같습니다.

실행하는 순서는 백문이불여일견! 한번 ECS를 직접 구성해보시는것을 권장 드립니다!!!
Hands-On 해볼 수 있도록 몇개 링크 함께 남깁니다. 🎉 화이팅!! 👍🏻
1) CI/CD WORKSHOP FOR AMAZON ECS : https://cicd-for-ecs.workshop.aws/en/
CI/CD workshop for Amazon ECS
CI/CD workshop for Amazon ECS Welcome to the CI/CD Workshop for Amazon ECS! In this workshop, we will use AWS CI/CD tools to implement a number of pipeline patterns that you can use to develop and deploy your Amazon ECS workloads.
cicd-for-ecs.workshop.aws
2) DEMOGO - CATS AND DOGS : https://ecs-cats-dogs.workshop.aws/en/
DemoGo - Amazon ECS Cats and Dogs
DemoGo - Cats and Dogs Searching for Love and Happiness This workshop is designed to educate engineers that might not be familiar with Amazon ECS, Fargate, and possibly even Docker container workflow. Amazon ECS Amazon Elastic Container Service (Amazon ECS
ecs-cats-dogs.workshop.aws
3) Building your first DevOps Blue/Green pipeline with Amazon ECS : https://catalog.us-east-1.prod.workshops.aws/v2/workshops/4b59b9fb-48b6-461c-9377-907b2e33c9df/en-US
Workshop Studio
catalog.us-east-1.prod.workshops.aws