15

Catchup vs Backfill: 과거 데이터 처리

Day 3: 매일 새벽 3시에 자동 실행

학습 목표

catchup 옵션의 동작을 이해한다 backfill 명령어를 사용할 수 있다

Catchup: 자동 과거 실행

에디터 로딩 중...

오늘이 1월 10일이고 DAG를 처음 켰다면?

catchup=True:

  • 1월 1일 ~ 1월 9일 모든 날짜에 대해 실행
  • 9개의 DAG Run이 생성됨

catchup=False:

  • 과거 실행 건너뜀
  • 다음 스케줄부터 실행

언제 catchup=True?

써야 할 때:

  • 신규 DAG 배포 후 과거 데이터 처리 필요
  • 장애 복구 후 놓친 기간 자동 처리

쓰면 안 될 때:

  • 실시간/최신 데이터만 필요한 경우
  • 과거 실행이 부담되는 무거운 작업

권장: 대부분 catchup=False로 설정하고, 필요시 수동 Backfill


Backfill: 수동 과거 실행

에디터 로딩 중...

catchup vs backfill 비교:

항목catchup=Truebackfill
실행 시점DAG 활성화 시 자동수동 명령
범위start_date ~ 현재 전체지정한 기간만
제어불가능세밀하게 가능

실무 팁

에디터 로딩 중...

max_active_runs: 동시에 실행되는 DAG Run 수 제한

  • catchup=True여도 한 번에 하나씩만 실행
  • 리소스 과부하 방지