DAG 설계, 스케줄링, 실패 처리 등 구체적 경험과 문제 해결 방식 서술
데이터 엔지니어링 수업 프로젝트에서 Airflow로 일일 ETL 파이프라인을 구성했습니다. API에서 데이터를 가져와 정제 후 PostgreSQL에 적재하는 DAG를 만들었는데, 초반에 의존 관계가 잘못 설정돼 태스크가 순서 없이 실행되는 문제가 생겼습니다. 원인은 >> 연산자로 의존성을 명시했지만 분기 조건을 잘못 처리한 부분이었습니다.
BranchPythonOperator로 분기를 명확히 나눈 뒤 해결됐습니다. 설계 측면에서는 태스크를 최대한 작은 단위로 쪼개는 방식이 실패 시 재시도 범위를 줄여준다는 걸 배웠습니다. 운영 과정에서는 외부 API 장애로 데이터가 한 번 누락됐는데, `retry` 설정과 `on_failure_callback`으로 Slack 알림이 오도록 구성했습니다. 그 이후로 파이프라인이 조용히 실패하지 않는 구조를 만드는 게 중요하다고 생각하게 됐습니다.
"파이프라인은 잘 돌아갈 때보다 실패할 때를 어떻게 다루는가"가 실제 운영 품질을 결정한다는 걸 이 경험에서 가장 많이 배웠습니다.