본문 바로가기
프로그래밍/DevOps & MLops 관련정보

[Airflow] Task Group

by 물박사의 저장공간 2025. 9. 6.

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