Airflow를 사용하다 보면, start_date 이후에 DAG을 처음 실행할 때
이전 날짜의 실행들이 한꺼번에 돌아가는 경우가 있습니다.
이 기능이 바로 Catchup이며, 그 기반 개념이 Backfill 입니다.
핵심 개념
- Airflow의 DAG은 start_date, end_date, schedule_interval로 정의된 시간 구간(interval) 마다 실행됩니다.
- 각 구간(interval)은 독립적인 DAG Run 으로 만들어지며,
atomic (독립적) 이고 idempotent (중복 실행해도 결과가 동일) 해야 합니다.
Catchup이란?
catchup=True (기본값)인 경우,
Airflow는 start_date부터 현재 시점까지 모든 누락된 interval을 자동 실행합니다.
즉,
DAG이 10월 1일부터 매일 실행되도록 설정했는데
실제로는 10월 5일에 처음 켠다면,
Airflow는 10월 1~4일까지의 DAG을 자동으로 백필(backfill) 실행합니다.
이 과정을 Catchup(보정 실행) 이라고 합니다.
Backfill이란?
Backfill은 Catchup의 핵심 원리로,
과거의 특정 기간에 대해 DAG을 다시 실행하거나
누락된 실행분을 채우는 작업을 의미합니다.
즉, Catchup이 자동으로 백필을 수행하는 개념이라 보면 됩니다.
시각적 예시
[start_date] ─ interval ─ interval ─ interval ─ [now or end_date]
각 interval이 DAG 실행 단위이며,
누락된 기간이 있다면 Catchup 기능이 이를 모두 채워줍니다.
Catchup 끄기
과거 데이터는 중요하지 않고, 현재부터만 실행하고 싶다면,
다음처럼 설정합니다 👇
with DAG(
dag_id='example_dag',
start_date=datetime(2025, 10, 1),
schedule_interval='@daily',
catchup=False
):
...
이렇게 하면 과거 구간은 건너뛰고, 현재 시점부터만 DAG이 실행됩니다.
정리하면
| 개념 | 설명 |
| Backfill | 과거 기간의 DAG 실행을 수동 또는 자동으로 채움 |
| Catchup | DAG이 켜질 때 이전 기간을 자동으로 Backfill 수행 |
| catchup=False | 과거는 무시하고 현재부터만 실행 |
'컨테이너·워크플로우 자동화 > Airflow로 워크플로우 자동화하기' 카테고리의 다른 글
| Airflow Queue란? (0) | 2025.10.19 |
|---|---|
| Airflow Dataset 완전 정리 (1) | 2025.10.19 |
| Airflow schedule_interval 완벽 정리 (0) | 2025.10.19 |
| Airflow DAG Scheduling 이해 (0) | 2025.10.19 |
| Airflow로 Star Wars API 데이터를 PostgreSQL에 적재하기 (0) | 2025.10.19 |