시작하며

5주차 수업에서는 데이터 엔지니어의 삶의 질을 좌우한다고 표현할 만큼 중요한 Backfill 개념을 집중적으로 다룬다. Open Weather API 연동과 함께 Primary Key 유일성 보장 방법도 살펴본다.

Info

강의 노트: 이 주차 내용은 Backfill과 Incremental Update의 운영 전략에 집중한다. execution_date를 올바르게 활용하는 것이 핵심이다.

Open Weather API와 Primary Key 관리

Primary Key Uniqueness 보장 방법

Open Weather API 데이터를 RedShift에 적재할 때 Primary Key 유일성을 보장해야 한다. 중복 레코드가 쌓이지 않도록 Upsert 방식을 검토한다(다음 시간에 상세 내용 다룸).

Backfill 전략

Backfill이란?

Backfill은 Incremental Update 파이프라인에서 특히 의미가 있는 개념이다. 과거 특정 기간의 데이터를 다시 채워 넣는 작업을 말한다.

  • 데이터 엔지니어의 삶의 질을 결정하는 핵심 기능이라 할 수 있다.

Incremental Update 실패 시 대처

  • 가능하면 Full-Refresh를 하는 것이 좋다.
  • Incremental Update는 효율이 좋지만, 운영/유지보수의 난이도가 올라간다.

지난 1년치를 Backfill 해야 하는 경우

아래 네 가지 개선 포인트를 적용한다.

  • 개선 1) 데이터 파이프라인의 스케줄에 따라, 해당 작업이 돌아야 했던 변수를 시스템에서 가지고 있게 한다. (execution_date 활용)
  • 개선 2) start_date는 처음 읽어오고 싶은 데이터의 날짜와 시간을 의미하며, DAG가 실행되는 날짜가 아니다.
  • 개선 3) 1번 실행하는 경우, 스케줄을 '@once'로 표기하면 1번만 실행된다.
  • 개선 4) catchup을 잘 설정한다. 그동안 실행되지 않은 것까지 한꺼번에 실행될 수 있다.

과제

정리하며

Backfill은 Incremental Update 방식의 파이프라인이 중단되었을 때 과거 데이터를 재처리하는 핵심 기능이다. execution_date를 파이프라인 내부에서 직접 하드코딩하는 대신 Airflow가 넘겨주는 값을 사용하도록 설계하면 Backfill 작업이 훨씬 수월해진다. catchup 설정과 start_date의 의미를 정확히 이해하는 것이 운영 실수를 줄이는 첫걸음이다.