본문 바로가기
Data Engineering

Airflow 살펴보기

by Tedi__ 2025. 12. 1.

1. Airflow ?

Apache Airflow는 배치 기반의 데이터 워크플로우를 개발(develop), 스케쥴링(schedule), 모니터(Monitor)를 하는 오픈소스 플랫폼입니다. 

쉽게 말해, "A 작업을 하고, 성공하면 B 작업을 하라. 만약 실패하면 C를 하고 나에게 알림을 보내줘"와 같은 일련의 과정들을 자동으로 지휘하는 지휘자 역할을 합니다. 특히 명확한 시작과 끝이 있는 배치(batch) 작업에 최적화되어 있습니다.

 

파이썬을 사용하여 다양한 데이터 엔지니어링 기술 플랫폼과 연결하여 워크플로우를 구축할 수 있으며
웹 UI를 통해 워크플로우 시각화, 관리 및 디버깅하는데에 아주 편리합니다.

개인 PC의 단일 프로세스부터 대규모 워크로드를 처리할 수 있는 분산 시스템까지 다양한 구성으로 Airflow를 실행할 수 있습니다.

2. Workflows as Code

Airflow의 가장 큰 특징은 Python 코드로 워크플로우를 정의한다는 점입니다. 드래그 앤 드롭 방식의 툴과 달리, 코드를 사용하기 때문에 다음과 같은 강력한 장점이 있습니다.

 

- 동적 생성 : 파이썬의 반복문 등을 이용해 수백 개의 작업을 동적으로 생성할 수 있습니다.

- 버전 관리 : Git을 사용하여 파이프라인 코드이 변경 사항을 관리하고 협업할 수 있습니다.

- 무한한 확장성 : 파이썬이 지원하는 거의 모든 라이블러리와 서비스에 연결할 수 있습니다.

 

3. Airflow,  실제로 어디에 쓰이나요?

1. 매일 밤 실행되는 데이터 웨어하우스 구축 (ETL/ELT)

 

"매일 새벽 2시, 어제 발생한 쇼핑몰 주문 데이터를 가져와 분석하기 좋게 정리한 뒤 저장하라"

 

서비스 DB, 로그 파일, 외부 API에 흩어진 데이터를 추출(Extract)해서 포맷을 변환(Transform)하고, 분석을 위한 데이터 웨어하우스(Snowflake, Bigquery 등)에 적재(Load)하는 과정을 자동화합니다.

 

2. 머신러닝 모델 자동 학습 (MLOps)

 

"매주 일요일, 지난주 사용자 행동 데이터를 기반으로 '상품 추천 알고리즘'을 다시 학습 시키고, 정확도가 90%이상이면 실제 서비스에 배포하라"

 

데이터 팀에서 AI 모델을 주기적으로 최신 데이터로 재학습시켜야 성능을 유지할 수 있습니다. Airflow는 데이터 전처리 부터 모델 학습, 성능 평가, 그리고 배포까지의 과정을 하나의 파이프라인을 만들 수 있습니다.

 

3. 정기 리포트 생성 및 알림 발송

 

"매일 아침 9시, 전날의 매출 요약 리포트를 생성해서 팀 슬랙(Slack)채널로 전송해라"

경영진 또는 마케팅 팀을 위해 쿼리 결과를 시각화 및 리포트를 생성하여 이메일이나, Slack으로 자동 전송할 수 있다.


4. 시스템 유지보수 및 백업 자동화


"매월 1일, 3년이 지난 오래된 로그 데이터를 압축하여 저렴한 스토리지로 옮기고 원본은 삭제하라"

 

데이터 분석 외에도 인프라 관리용으로도 훌륭합니다. 정기적인 데이터베이스 백업이나 오래된 임시 파일 삭제 같은 유지보수 작업을 실수 없이 처리합니다.

4.  Airflow에서 사용하는 핵심용어

3-1. Dag

airflow dags

Airflow에서 DAG(Directed Acyclic Graph) 방향성 비순환 그래프로 데이터 파이프라인이나 워크플로우 관리 작업들의 실행 순서를 정의하는 데 사용합니다. 즉 "순환하지 않고 한 방향으로 흐르는 작업들의 흐름"을 뜻합니다.

 

3-2. Task

Dag안에서 실행되는 작업의 최소 단위입니다.

 

3-3. Operator

실제로 작업을 수행하는 작업자. (예: PythonOperator, BashOperator 등)

 

5.  Airflow를 써야만 하는 이유

1. 방대한 생태계와 커뮤니티 

가장 많은 사용자를 보유하고 있어 문서가 풍부하고, 문제 발생시 해결책을 찾기 쉽다. AWS, Google Cloude 등 메이저 클라우드의 관리형 서비스로도 쉽게 접할 수 있다.

 

2. 강력한 스케쥴링

단순한 시간 간격 실행뿐만 아니라, 복잡한 크론(Cron)식이나 데이터 도착 시점에 맞춘 실행(Sensor)등 정교한 제어 가능

 

3. 직관적인 UI

현재 어떤 작업이 돌고 이는지, 어디서 에러가 났는지 시작적으로 한눈에 파악 할 수 있는 웹 인터페이스 제공.

 

6.  Airflow를 사용한다면 꼭 기억해야 할 3가지 원칙

1. 멱등성(Idempotency) 

태스크는 몇 번을 재실행하더라도 항상 동일한 결과를 내야한다.

 

2. 태스크는 작고 명확하게

하나의 태스크의 많은 일이 시키지 마세요. 실패했을 경우 원인을 찾기 어렵다.

 

3. 무거운 연산은 함수 안에서

DAG 파일의 최상위 레벨(Top-level)에 무거운 코드를 넣으면 스케쥴러 성능이 저하됩니다. 무거운 라이브러리 로딩이나 연산은 반드시 함수 내부에서 구현하세요.

마치며

필자의 회사에서도 Airflow를 데이터 파이프라인, 알림(Notification) 등에 수백 개의 DAG를 개발하여 사용하고 있습니다. 데이터 엔지니어뿐만 아니라 파이썬 기본 문법만 알고 있는 데이터 분석가도 충분히 DAG를 추가할 수 있을 정도로 쉬운 난이도를 가지고 있으며, 매우 안정적으로 스케줄링된 파이프라인을 운영할 수 있습니다. 또한 직관적인 UI를 통해 원클릭으로 실패한 Task의 재실행 확인과 재실행을 할 수 있는 것도 매우 큰 장점이라고 생각합니다.

최근 Dagster나 Perfect같은 새로운 도구들도 등장하고 있지만, Airflow는 충분히 가장 안정적이고 검증된 선택지라고 생각합니다.

개인 노트북에서도 실행이 가능하니 내부 POC과정을 거쳐 사용을 도입해보는 것을 추천합니다.

 

참고. 
https://airflow.apache.org/docs/apache-airflow/stable/index.html

https://airflow.apache.org/docs/apache-airflow/2.5.2/core-concepts/dags.html