시작하며
3주차 수업에서는 데이터 파이프라인의 핵심 개념인 ETL을 자세히 다루고, Airflow의 구성 요소와 설치 방법을 살펴본다. Full Refresh vs Incremental Update, Backfill 같은 실무적인 주제도 함께 다룬다.

ETL과 데이터 파이프라인 개념
ETL: Extract, Transform, Load
- Data Pipeline, ETL, Data Workflow, DAG(Directed Acyclic Graph)는 모두 동일한 개념을 다른 이름으로 부르는 것이다.
- ELT: Data-warehouse 내에 이미 있는 내부 데이터를 조작해서 요약된 데이터를 만드는 것.
Data Lake vs Data Warehouse
- Data Lake: 구조화된 데이터 + 비구조화 데이터
- 보존기한이 없는 모든 데이터를 원래 형태로 보존한다.
- Data Warehouse: 보존기한이 있는 구조화된 데이터.
- BI 툴들이 주로 Data Warehouse를 백엔드로 사용한다.
Data Pipelines 유형
- Raw Data ETL Jobs
- Summary/Report ELT Jobs
- Production Data Jobs
- Cassandra/Hbase/DynamoDB 같은 NoSQL
- MySQL(OLTP)
- Redis/Memcache 같은 캐시
- ElasticSearch 같은 검색엔진
Simple ETL
- https://colab.research.google.com/drive/1nITNr8_z6DDHVXtZ08C8RYDxJDdtHb0O?usp=sharing
- FULL REFRESH vs INCREMENTAL UPDATE
- FULL REFRESH: 매번 소스의 내용을 다 읽어오는 방식
- 효율성이 떨어질 수 있지만 간단하고, 소스 데이터에 문제가 생겨도 다시 다 읽어오므로 유지보수가 쉽다. 데이터가 커지면 사용 불가.
- INCREMENTAL UPDATE: 효율성이 좋지만 유지보수가 힘들어진다.
- 보통 daily나 hourly로 동작한다.
- Backfill 이슈가 있다.
- FULL REFRESH: 매번 소스의 내용을 다 읽어오는 방식
데이터 파이프라인 설계 시 고려할 점
- 가능하다면 Full Refresh를 하라.
- Incremental Update만이 가능하다면 created, modified, deleted 필드를 추가한다.
- 멱등성(idempotency)을 보장한다.
- 과거 데이터를 다시 채우는 과정(Backfill)이 쉬워야 한다. → Airflow의 강점
- 데이터 파이프라인의 입력과 출력을 명확히 하고 문서화한다.
- 주기적으로 쓸모없는 데이터들을 삭제한다.
- 데이터 파이프라인 사고 시 사고 리포트(post-mortem)를 작성한다.
- 중복 레코드, PK 보장 등을 확인한다.
Backfill
Incremental Update에서 의미가 있다. 날짜값 등 파라미터 값을 DAG에서 직접 구하거나 하드코딩하는 방식이 아니라, Airflow에서 넘겨받아 처리하도록 한다.
Airflow 구성 요소와 설치
Airflow란?
- Data-Pipeline 스케줄링 도구로, 큰 회사(구글 클라우드 등)에서 널리 사용된다.
- 다양한 데이터 소스와 데이터 웨어하우스를 지원한다.
- 백필(Backfill)이 쉽다는 것이 큰 장점이다.
- 단점: 개발환경 셋업이 쉽지 않고 배우기가 어렵다.
Airflow 구성 요소
-
- Web Server
-
- Scheduler
-
- Worker → 이것을 늘리는 형태로 scale out한다.
-
- Database (sqlite가 기본)
-
- Queue (Worker가 다수인 경우)
DAG(Directed Acyclic Graph)
- Airflow에서 ETL을 부르는 명칭이다.
- DAG는 task로 구성된다 (ex: Extract, Transform, Load).
- task는 Airflow의 Operator로 만들어지며, 이미 다양한 종류의 Operator를 제공한다. 없다면 직접 개발해야 한다.
- schedule은 crontab 문법을 따른다. 모든 시간은 UTC 기준이다.
*(A') *(B') *(C') *(D') *(E')- A’: minute(0~59)
- B’: hour(0~23)
- C’: day of month(1~31)
- D’: month of year(1~12)
- E’: day of week(1~7)
Airflow 설치 (Docker)
Docker Engine을 설치한 후 아래와 같이 진행한다.
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.5.1/docker-compose.yaml'
# airflow webserver permission error는 공식문서 방법대로 처리하면 됨
mkdir -p ./dags ./logs ./plugins \
echo -e "AIRFLOW_UID=$(id -u)" > .env
정리하며
ETL과 ELT의 차이, Full Refresh와 Incremental Update의 트레이드오프를 이해하는 것이 데이터 파이프라인 설계의 핵심이다. Airflow는 DAG 기반의 스케줄링 도구로, Backfill 기능이 특히 강력하다. Docker Compose를 통해 로컬 환경에서 Airflow를 빠르게 띄워볼 수 있다.