Post

Airflow DAG 파라미터 & 오퍼레이터 정리

Apache Airflow DAG 작성 시 자주 사용하는 파라미터 옵션들과 대표 오퍼레이터들을 공식문서를 기반으로 정리

Airflow DAG 파라미터 & 오퍼레이터 정리

Apache Airflow에서 DAG(Directed Acyclic Graph)를 정의할 때는 단순히 태스크의 순서를 지정하는 것뿐 아니라 다양한 실행 옵션을 설정할 수 있다. 또한 Operator를 통해 실제 작업 단위를 정의하며, 데이터 이동·API 호출·조건 분기·알림 등 다양한 목적에 맞는 오퍼레이터들이 존재한다.


DAG 기본 구조 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from datetime import datetime, timedelta
from airflow import DAG
from airflow.providers.standard.operators.bash import BashOperator

with DAG(
    dag_id="tutorial",
    description="A simple tutorial DAG",
    schedule_interval=timedelta(days=1),
    start_date=datetime(2021, 1, 1),
    catchup=False,
    default_args={
        "depends_on_past": False,
        "retries": 1,
        "retry_delay": timedelta(minutes=5),
    },
    tags=["example"],
) as dag:

    t1 = BashOperator(
        task_id="print_date",
        bash_command="date",
    )

···


주요 파라미터 정리

파라미터설명기본값예시활용 사례
dag_idDAG 고유 식별자필수dag_id="tutorial"DAG 관리, 모니터링
descriptionDAG 설명문없음description="ETL Pipeline"문서화, UI 가독성
schedule_intervalDAG 실행 주기없음schedule_interval="0 12 * * *"매일 정오 실행
start_dateDAG 실행 시작일없음datetime(2021,1,1)실행 시작 시점 설정
catchup과거 기간에 대한 DAG 실행 여부TrueFalse백필 여부 제어
tagsDAG에 태그 지정없음tags=["etl", "example"]UI 검색/필터링
default_argsDAG 내 모든 태스크에 공통 적용되는 기본 인자{}{ 'retries': 1 }공통 정책 적용
depends_on_past이전 실행(Task Instance)이 성공해야 현재 실행 진행 여부 결정FalseTrue순차적 종속성 있는 ETL
retries실패 시 재시도 횟수0retries=3일시적 오류 대응
retry_delay재시도 간격timedelta(minutes=5)timedelta(minutes=10)API rate limit 대응
max_retry_delay재시도 간격의 최대 한도없음timedelta(hours=1)지수적 백오프 제한
queue실행할 워커 큐 지정defaultqueue='bash_queue'워커 자원 분리
pool동시 실행 개수를 제한하는 풀 지정없음pool='db_pool'DB 연결 보호
priority_weight스케줄링 우선순위 가중치1priority_weight=10중요 태스크 우선 실행
end_dateDAG 실행 종료일없음datetime(2025, 12, 31)특정 기간 한정 캠페인
wait_for_downstream이전 DAG 실행의 다운스트림(Task 이후 단계) 완료까지 대기 여부FalseTrue데이터 일관성 보장
execution_timeout태스크 최대 실행 시간없음timedelta(minutes=30)무한 대기 방지
sla태스크 완료 목표 시간없음sla=timedelta(hours=1)SLA 모니터링
trigger_rule태스크 실행 조건all_successtrigger_rule='all_failed'특정 조건에서 실행
on_failure_callback실패 시 실행할 함수없음on_failure_callback=alert_funcSlack/Email 알림
on_success_callback성공 시 실행할 함수없음on_success_callback=log_func성공 로깅
on_retry_callback재시도 시 실행할 함수없음on_retry_callback=retry_alert재시도 모니터링
sla_miss_callbackSLA 위반 시 실행할 함수없음sla_miss_callback=notify_funcSLA 경고
on_skipped_callback태스크 건너뜀 시 실행할 함수없음on_skipped_callback=skip_logger조건부 태스크 추적
email알림 메일 주소 (리스트)없음email=['dev@team.com']실패 시 이메일 알림
email_on_failure실패 시 이메일 전송 여부FalseTrue자동 실패 알림
email_on_retry재시도 시 이메일 전송 여부FalseTrue재시도 상황 모니터링
resources태스크 실행 시 필요한 리소스(CPU, 메모리 등) 제약 설정없음resources={'cpus':1,'ram':512}리소스 관리
doc_md / doc태스크/DAG에 대한 문서화 (Markdown, plain text 등)없음t1.doc_md = "### 설명..."UI에 문서 표시
task_concurrency태스크 인스턴스의 동시 실행 개수 제한없음task_concurrency=1중복 실행 방지

실행 조건 (Trigger Rules)

Airflow는 DAG 실행 시 각 태스크가 언제 실행될지를 Trigger Rule로 제어한다.

Trigger Rule설명
all_success모든 업스트림 태스크가 성공해야 실행 (기본값)
all_failed모든 업스트림 태스크가 실패해야 실행
one_success업스트림 중 하나라도 성공 시 실행
one_failed업스트림 중 하나라도 실패 시 실행
none_failed업스트림이 실패하지 않았을 때 실행
always업스트림 결과와 관계없이 항상 실행

주요 오퍼레이터 정리

Airflow의 Operator는 태스크에서 실제로 수행할 작업을 정의한다. 목적별로 다양한 오퍼레이터가 제공된다.

Operator설명활용 예시
BashOperatorBash 명령어 실행bash_command="date"
PythonOperatorPython 함수 실행데이터 전처리 함수 실행
BranchPythonOperator조건 분기 실행특정 조건에 따라 다른 태스크 실행
DummyOperator / EmptyOperator실제 작업 없이 DAG 구조만 유지테스트, 태스크 연결용
EmailOperator이메일 발송실패/성공 알림 메일 전송
SimpleHttpOperatorHTTP API 호출REST API 호출
Sensor (예: S3KeySensor)특정 조건 만족 시까지 대기S3 객체 존재 확인 후 다음 단계 진행
S3ToRedshiftOperatorAWS S3 → Redshift 데이터 적재데이터 웨어하우스 로드
GoogleCloudStorageToBigQueryOperatorGCS → BigQuery 데이터 적재GCP 데이터 파이프라인
DockerOperatorDocker 컨테이너 실행특정 환경 격리 실행
KubernetesPodOperatorKubernetes Pod 실행클러스터 기반 확장 실행

정리

  • DAG 파라미터는 단순 옵션이 아니라 워크플로우의 신뢰성과 운영 효율성을 좌우한다.
  • retries, timeout, queue, pool 등은 장애 대응과 리소스 관리에 핵심적이다.
  • Operator는 목적에 맞게 선택해야 하며, ETL/데이터 이동/알림/조건 분기/컨테이너 실행 등 다양한 상황에서 조합 가능하다.
  • 팀 단위 운영에서는 callback, SLA, resources 옵션과 함께 Transfer·Sensor 오퍼레이터를 적절히 활용하는 것이 권장된다.
This post is licensed under CC BY 4.0 by the author.