kui-vault/03.Note/태스크 정의 패밀리.md

2.7 KiB

id created tags
태스크 정의 패밀리 20260305 2026-03-05 09:04

💡 생각

태스크는 인스턴스, 태스크 정의 패밀리는 객체와 같다고 보면 된다. 즉, 붕어빵(태스크)과 붕어빵틀(태스크 정의 패밀리)의 사이와 같다.

[!question] Q. 태스크 이름이라고 하면 되지 왜 태스크 정의 패밀리 이름 이라고 이상하게 이름붙여놓은거야? A. 그 마음 100% 이해합니다! 처음에 AWS ECS를 접하면 **"그냥 태스크 이름(Task Name)이라고 하면 될걸, 왜 굳이 '패밀리(Family)'라는 거창한 단어를 붙여서 헷갈리게 할까?"**라는 생각이 들기 마련이죠.

이게 단순히 이름을 어렵게 지은 게 아니라, **'버전 관리'**라는 개념 때문에 그렇습니다.

1. 태스크 정의는 "한 번 쓰면 수정 불가능(Immutable)" 하기 때문입니다

AWS ECS에서 **태스크 정의(Task Definition)**는 한 번 만들면 내용을 고칠 수 없습니다. 만약 이미지 태그를 v1에서 v2로 바꾸고 싶다면, 기존 것을 수정하는 게 아니라 새로운 버전을 구워내야 합니다.

이때, **"이 설계도들은 다 같은 용도의 설계도들이야"**라고 묶어주는 그룹 이름이 바로 **패밀리(Family)**입니다.

  • Family Name: my-web-app (성씨)

  • Revision 1: my-web-app:1 (첫째)

  • Revision 2: my-web-app:2 (둘째)

  • Revision 3: my-web-app:3 (셋째)

2. '태스크 이름'과 구분하기 위해서입니다

만약 이걸 그냥 '태스크 이름'이라고 불러버리면, **실제로 돌아가고 있는 실행 객체(Running Task)**와 구분이 안 됩니다.

  • 태스크 정의 패밀리 (Family): "웹 서버를 띄우기 위한 설계도 세트" (붕어빵 틀의 종류)

  • 태스크 (Task): "지금 서버에서 실제로 돌아가고 있는 프로세스" (틀에서 찍어낸 실제 붕어빵)

만약 질문자님이 my-web-app이라는 패밀리 이름을 정했다면, 그 설계도로 10개의 태스크를 띄울 수 있습니다. 이때 "태스크 이름이 뭐야?"라고 물으면 "10개 중에 어떤 거?"라고 되묻게 되죠. 그래서 설계도의 이름은 '패밀리'라고 불러서 확실히 구분 짓는 것입니다.

3. 서비스(Service)와의 연결 고리

ECS 서비스를 만들 때 "어떤 태스크를 돌릴래?"라고 물어보는데, 이때 특정 버전(:1)을 지정할 수도 있지만, 보통은 패밀리 이름을 지정합니다. 그러면 서비스는 **"아, 이 패밀리(가족) 중에서 가장 최신 버전(Latest Revision)을 가져다가 쓰면 되겠구나!"**라고 판단합니다.