ECS

→ "여러 대의 서버에 걸쳐, 컨테이너들을 자동으로 배치/확장/복구해주는 총괄 관리자”

1. Cluster (클러스터) : 독립된 서버들의 집합 (service, Task 전부 가능)

ECS Cluster = "컨테이너를 띄울 수 있는 여러 서버(또는 Fargate 자원)들의 집합"

2. Task Definition (태스크 정의) : Launch Templete

Task Definition에 정의하는 내용:   - 어떤 Docker 이미지를 쓸지 (ECR의 이미지 경로)   - CPU/메모리를 얼마나 할당할지   - 포트 매핑   - 환경변수   - IAM Role (이 컨테이너가 어떤 AWS 권한을 가질지)

3. Task (태스크) : 컨테이너

Task Definition = 설계도 (붕어빵 틀)
Task = 그 설계도로 실제 실행된 컨테이너(들) (구운 붕어빵)

4. Service (서비스) : ASG

"이 Task를 몇 개나 계속 유지할지" 관리해주는 계층이에요. 앞서 배운 ASG(Auto Scaling Group)와 매우 비슷한 개념이에요.

Service 설정: "이 Task Definition으로 만든 Task를 항상 5개 유지해줘"
   → Task 하나가 죽으면 → Service가 자동으로 새 Task를 띄워서 5개를 유지 (self-healing)     → ALB와 연동해서, 트래픽을 여러 Task에 분산 가능
[ECS Cluster] (서버들의 묶음)
   │
   └── [Service] "5개 유지해줘" ← ASG와 비슷한 역할
         │
         ├── [Task 1] ← Task Definition으로 만들어진 실행 단위
         ├── [Task 2]
         ├── [Task 3]
         ├── [Task 4]
         └── [Task 5]
               │
               └── (각 Task 안에 1개 이상의 컨테이너)

참고: 권한들