home
SAA-C03

[Compute] ECS 컨셉 노트

시험 빈출 ECS 컨셉 노트

Amazon ECS (with Fargate) for SAA-C03

One-Line Summary

ECS는 Docker 컨테이너의 배포·스케줄링·스케일링·헬스체크를 대신 해주는 AWS 관리형 컨테이너 오케스트레이션이다. 시험에서는 대부분 컨테이너를 어디에 띄울지 — 내가 관리하는 EC2 위(EC2 Launch Type)인가, 서버 관리가 없는 Fargate인가 를 묻는다.

Why It Exists

컨테이너를 여러 대 운영하려면 "어느 서버에, 몇 개를, 죽으면 어떻게 재시작할지"를 계속 관리해야 한다. 이를 손으로 하면 부담이 크다.

ECS는 이 문제를 해결한다.

컨테이너 직접 운영
  -> 어느 서버에 배치할지, 몇 개 띄울지, 죽으면 재시작할지 전부 수동

ECS
  -> Task Definition(설계도)만 주면 배치/개수 유지/재시작/ALB 연동을 자동
  -> EC2 위에 띄울지, 서버 없는 Fargate로 띄울지 선택

시험 감각:

"AWS에서 Docker 컨테이너를 운영" = ECS(또는 EKS). 거기서 "서버 관리는 하기 싫다"가 붙으면 = Fargate.

Abbreviations

약어풀네임의미
ECSElastic Container ServiceAWS 관리형 Docker 컨테이너 오케스트레이션
EKSElastic Kubernetes ServiceAWS 관리형 Kubernetes 서비스
ECRElastic Container RegistryDocker 이미지를 저장하는 AWS 이미지 저장소
FargateFargate서버 관리 없이 컨테이너를 실행하는 서버리스 엔진
TaskTask실제로 떠 있는 컨테이너 실행 단위
ALBApplication Load BalancerECS Service 앞단 트래픽 분산용 L7 로드 밸런서

구성 요소

ECS는 아래 개념으로 컨테이너 운영을 자동화한다.

Task Definition (설계도)  ->  Task (실제 실행)  ->  Service (원하는 개수 유지)  ->  Cluster (실행 그룹)
개념의미
Task Definition컨테이너 실행 설계도(이미지, CPU/메모리, 포트, 환경변수)
Task설계도로 실제 떠 있는 컨테이너(들)
Service원하는 Task 개수를 유지·자동 복구, ALB 연동
ClusterTask가 배치되는 논리적 그룹

두 가지 실행 방식(Launch Type) — 시험 핵심

ECS는 컨테이너를 어디에 띄울지로 두 가지 방식이 있다.

구분EC2 Launch TypeFargate Launch Type
서버(EC2) 관리사용자가 직접 (프로비저닝·패치·스케일링)AWS가 관리 (서버 개념 없음)
형태내가 띄운 EC2 클러스터 위에 컨테이너 배치컨테이너 스펙만 정의하면 AWS가 실행
관리 부담거의 없음
비용 모델EC2 인스턴스 요금(켜둔 만큼)컨테이너가 쓴 vCPU/메모리 × 실행 시간
적합인스턴스 세밀 제어, GPU 등 특수 인스턴스, 이미 EC2 여유 용량서버 관리 없이 빠르게, 가변적·드문 워크로드

AWS Fargate

Fargate서버(EC2)를 프로비저닝·관리하지 않고 컨테이너를 실행하는 서버리스 컴퓨트 엔진이다. 별도 오케스트레이터가 아니라 ECS/EKS의 실행 방식으로 붙여 쓴다. 사용자는 컨테이너 스펙(이미지·CPU·메모리)만 정의하고, 서버 준비·패치·스케일 인/아웃은 AWS가 한다.

항목의미
정체ECS/EKS의 서버리스 실행 엔진
관리서버 프로비저닝/패치/스케일링 전부 AWS
확장Task 단위로 자동 축소·확장
과금컨테이너가 사용한 vCPU/메모리 × 실행 시간
대표 키워드serverless containers, no EC2 to manage, no server provisioning

시험 감각:

"reduce operational overhead / no servers to manage" + 컨테이너 = Fargate.

IAM 역할 — Task Role vs Task Execution Role (빈출)

ECS의 IAM 역할은 두 개가 목적이 완전히 다르다. 시험에서 자주 헷갈리게 낸다.

역할누가 쓰나용도
Task Role컨테이너 안의 애플리케이션앱이 다른 AWS 서비스 호출 (예: S3 읽기, DynamoDB 접근)
Task Execution RoleECS 에이전트/Fargate이미지 pull(ECR), 로그 전송(CloudWatch Logs), Secrets 주입
Task Role         : "내 앱이 S3 버킷을 읽어야 한다" -> 앱에 부여할 권한
Execution Role    : "ECS가 ECR에서 이미지를 당기고 로그를 CloudWatch에 보낸다" -> 실행 인프라 권한

시험 감각:

"컨테이너 앱이 S3/DynamoDB에 접근해야 한다" = Task Role에 권한. "이미지 pull이나 로그 전송이 실패한다" = Task Execution Role 문제.

확장과 비용 최적화 (Auto Scaling · Spot)

항목내용
Service Auto ScalingService의 Task 개수를 CPU/메모리/요청수 기준 Target Tracking으로 자동 조절
Cluster Capacity ProviderEC2 Launch Type에서 클러스터의 EC2 용량을 워크로드에 맞춰 자동 확보/축소
Fargate Spot중단 감내 가능한 워크로드를 Fargate에서 최대 ~70% 저렴하게
EC2 SpotEC2 Launch Type에서 Spot 인스턴스로 컨테이너 비용 절감

시험 감각:

"컨테이너 워크로드를 최저 비용, 중단 감내 가능" = Fargate Spot / EC2 Spot. "부하에 따라 태스크 수 자동 조절" = Service Auto Scaling.

영속·공유 스토리지 연동 (EFS)

컨테이너는 기본적으로 stateless다. Task가 죽으면 컨테이너 로컬 데이터도 사라진다. 재시작해도 유지되거나 여러 Task가 공유해야 하는 데이터EFS를 마운트한다.

요구사항해법
Task 재시작/교체에도 데이터 유지EFS 볼륨 마운트
여러 Task/여러 AZ가 같은 파일 공유EFS (Fargate도 EFS 지원)
임시 작업 공간(캐시 등)Task 임시 스토리지(ephemeral)

시험 감각:

"컨테이너에 영속적/공유 스토리지가 필요하다" = EFS (Fargate + EFS 조합도 출제).

네트워킹 모드 (awsvpc)

Fargate는 항상 awsvpc 모드를 쓴다. 각 Task가 자기 ENI와 사설 IP를 가져 VPC 내 다른 리소스처럼 보안 그룹을 붙일 수 있다. Task 단위로 네트워크를 격리·제어할 수 있는 것이 핵심이다.

ECS vs EKS

구분ECSEKS
오케스트레이터AWS 자체(간단, AWS 통합 쉬움)Kubernetes(표준, 이식성·생태계)
러닝커브낮음상대적으로 높음
실행 방식EC2 / FargateEC2 / Fargate
고를 때AWS 안에서 간단히기존 K8s 자산·멀티클라우드·K8s 표준 필요

참고: Docker 이미지는 ECR(Elastic Container Registry)에 저장·버전관리한다.

Common Wrong Directions

오답 방향왜 부족한가
컨테이너인데 서버 관리를 줄이려고 EC2 Launch Type 선택서버 관리 최소화면 Fargate가 정답
GPU/인스턴스 세밀 제어가 필요한데 Fargate 선택인스턴스 단위 제어·특수 인스턴스는 EC2 Launch Type
K8s가 꼭 필요 없는데 EKS 선택AWS 안에서 간단하면 ECS가 러닝커브 낮음
짧은 이벤트 처리에 ECS 클러스터 구성이벤트 기반 짧은 코드는 Lambda가 더 간단·저렴
앱의 S3 접근 권한을 Execution Role에 부여앱 권한은 Task Role, Execution Role은 이미지 pull/로그용
컨테이너 재시작 후 데이터 유지에 로컬 스토리지 사용영속·공유 데이터는 EFS 마운트
중단 감내 컨테이너를 On-Demand Fargate로만 운영비용 최적화는 Fargate Spot / EC2 Spot

Exam Triggers

문제에서 이런 표현이 나오면떠올릴 것
"run Docker containers on AWS"ECS (또는 EKS)
"run containers without managing servers/EC2"Fargate
"reduce operational overhead", "no server provisioning" (컨테이너)Fargate
"need GPU / instance-level control" (컨테이너)ECS on EC2
"already use Kubernetes / portability"EKS
"store/version Docker images"ECR
"container app needs access to S3/DynamoDB"Task Role
"image pull / log delivery fails", "grant ECS pull from ECR"Task Execution Role
"auto scale number of tasks by CPU/requests"Service Auto Scaling
"lowest cost containers, interruption tolerant"Fargate Spot / EC2 Spot
"persistent/shared storage for containers"EFS
"each task needs its own ENI / security group"awsvpc 네트워킹 모드

Memory Sentence

ECS는 AWS 관리형 컨테이너 오케스트레이션. 서버(EC2)를 내가 관리하면 EC2 Launch Type, 서버 관리가 아예 없으면 Fargate. K8s 표준이 필요하면 EKS, 이미지 저장은 ECR. 앱 권한은 Task Role·인프라(이미지/로그) 권한은 Execution Role, 영속/공유 데이터는 EFS, 비용은 Spot, 확장은 Service Auto Scaling.

References

댓글

아직 댓글이 없습니다.