Airflow 태스크 그룹(Task Group)은 복잡한 DAG 내부의 여러 관련 Task들을 시각적으로 하나의 그룹으로 묶어주는 UI 기능입니다. 이를 통해 수십, 수백 개의 Task로 이루어진 DAG의 그래프 뷰(Graph View)를 훨씬 더 깔끔하고 이해하기 쉽게 만들 수 있습니다.
마치 바탕화면으로 비유하자면,
- Task: 수많은 파일과 바로가기 아이콘들
- Task Group: 이 파일들을 용도에 맞게 정리하는 폴더
라고 할 수 있다는 것이죠. DAG 그래프가 너무 복잡해져서 흐름을 파악하기 어려울 때, '데이터 추출(Extract)', '데이터 변환(Transform)', '데이터 적재(Load)' 와 같이 관련된 Task들을 각각의 태스크 그룹으로 묶으면, 전체적인 흐름을 높은 수준에서 쉽게 파악할 수 있습니다.
1. Task Group을 사용하는 이유
- 가독성 향상: 거미줄처럼 얽힌 복잡한 DAG를 논리적인 블록 단위로 정리하여 전체 워크플로우를 한눈에 파악하기 쉽게 만듭니다. 그룹은 UI에서 접었다 폈다(expand/collapse) 할 수 있습니다.
- 의존성 설정 간소화: 그룹 전체에 대해 의존성을 설정할 수 있습니다. 예를 들어, start Task가 끝난 후 '데이터 변환' 그룹 전체가 실행되고, 그룹 내 모든 작업이 끝나면 end Task가 실행되도록 start >> transform_group >> end 와 같이 간단하게 표현할 수 있습니다.
- 논리적 구조화: 개발자가 DAG를 작성할 때부터 자연스럽게 논리적인 단위로 Task를 구성하도록 유도하여 코드의 구조를 개선하는 효과도 있습니다.
2. 예시
from airflow.models.dag import DAG
from airflow.operators.bash import BashOperator
from airflow.utils.task_group import TaskGroup
import pendulum
with DAG(
dag_id='example_task_group_dag',
start_date=pendulum.datetime(2025, 1, 1, tz="Asia/Seoul"),
schedule=None,
catchup=False,
) as dag:
start = BashOperator(task_id='start', bash_command='echo "start"')
# 'processing_tasks' 라는 이름의 태스크 그룹 정의
with TaskGroup(group_id='processing_tasks') as processing_group:
# --- 이 블록 안에 있는 Task들은 모두 그룹에 속하게 됨 ---
task_1 = BashOperator(task_id='task_1', bash_command='echo "task 1"')
task_2 = BashOperator(task_id='task_2', bash_command='echo "task 2"')
task_3 = BashOperator(task_id='task_3', bash_command='echo "task 3"')
# 그룹 내부에서의 의존성 설정
task_1 >> [task_2, task_3]
# ---------------------------------------------------
end = BashOperator(task_id='end', bash_command='echo "end"')
# 그룹 전체에 대한 의존성 설정
start >> processing_group >> end
'프로그래밍 > DevOps & MLops 관련정보' 카테고리의 다른 글
| [Airflow] Branch Operator/Trigger Rule (0) | 2025.09.08 |
|---|---|
| [Airflow] XCom (0) | 2025.09.06 |
| [Airflow] Flower로 모니터링 하기 (0) | 2025.09.06 |
| [Airflow] Scheduling (0) | 2025.09.06 |
| [Airflow] Hook (0) | 2025.09.05 |