상위: Airflow · 허브: Data Engineering
요약
Apache Airflow는 Python 기반 워크플로우 오케스트레이션 도구로, DAG를 통해 배치 작업을 자동화하고 스케줄링합니다. Docker Compose로 쉽게 설치할 수 있으며, Web UI를 통해 직관적으로 모니터링할 수 있습니다. 데이터 파이프라인, MLOps, 인프라 자동화 등 다양한 분야에 활용됩니다.
워크플로우 오케스트레이션
작업(Task)을 정해진 순서에 따라 실행하고 자동화하는 기술
- 활용 분야: 데이터 파이프라인, 머신러닝, CI/CD 등
주요 기능
- 작업 자동화: 반복적인 수작업 제거
- 의존성 관리: 특정 작업이 완료된 후 다른 작업 실행 가능
- 실패 처리 및 모니터링: 장애 발생 시 재시도 및 알림 제공
- 스케줄링 기능: 특정 시간 또는 이벤트 기반 실행 가능
Apache Airflow
- Python 기반의 데이터 파이프라인 자동화 및 스케줄링 도구
- 배치 프로세스를 효율적으로 관리하는 워크플로우 오케스트레이션 도구
- 다양한 시스템 및 데이터베이스와 통합 가능 (ETL, MLOps, 클라우드 등)
Apache Airflow 역할
- 데이터 파이프라인 자동화
- DAG(Directed Acyclic Graph)를 이용한 작업 정의
- 실행 및 장애 관리, 모니터링 기능 제공
주요 활용 사례
- Business Operations: 핵심 비즈니스 데이터 애플리케이션 자동화
- ETL / ELT: 데이터 수집, 변환, 적재 자동화
- Infrastructure Management: 클라우드 리소스 프로비저닝, CI/CD 자동화
- MLOps: 머신러닝 파이프라인 자동화 (데이터 수집 → 학습 → 평가 → 배포)
Why Airflow?
기존 방식의 한계 (Cron Job, Bash Script)
- 작업 간 의존성 관리 어려움
- 장애 발생 시 원인 추적 및 복구 어려움
- 로그 관리 및 모니터링 부족
Airflow 도입 시 장점
- DAG 기반 의존성 관리 → Task 실행 순서 설정 가능
- Web UI 제공 → 직관적인 모니터링 가능
- 재시도 및 알림 기능 → 장애 발생 시 자동 대응
- 확장성 및 유연성 → 다양한 실행 환경 지원

장단점
장점
- Python 기반 → 개발자가 쉽게 접근 가능
- 강력한 UI 제공 → 직관적인 모니터링 가능
- 태스크 간 의존성 관리 용이 → DAG 구조 활용
- 확장성 높음 → 다양한 Executor 지원
- 장애 복구 기능 제공 → 재시도 및 알림 설정 가능
단점
- 초기 설정 및 학습 곡선이 가파름
- 실시간 데이터 처리에는 부적합 (→ 배치 vs 실시간 참조)
- 복잡한 DAG의 경우 성능 튜닝 필요
Airflow 설치 및 환경세팅
공식 가이드: Docker Compose로 Airflow 실행하기
1. docker-compose.yaml 설치
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.10.5/docker-compose.yaml'
2. Airflow 사용자 디렉토리 및 환경변수 설정
mkdir -p ./dags ./logs ./plugins ./config
echo -e "AIRFLOW_UID=$(id -u)" > .env
3. 초기화
docker compose up airflow-init
4. 실행
docker compose up
Docker 활성화 확인
sudo docker ps
airflow-worker,airflow-webserver,scheduler,postgres,redis등 container들이 정상 작동 중인지 확인
Web UI 접속
- 브라우저 주소창에 입력: http://localhost:8080
- 기본 로그인:
- Username: airflow
- Password: airflow
Airflow Library 설치 (로컬 개발 환경용)
pip install "apache-airflow[celery]==2.10.5" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.10.5/constraints-3.8.txt"
celery옵션은 Executor로 Celery를 사용하는 경우constraints옵션은 의존성 충돌을 방지하는 용도 (Airflow 공식 권장 방식)
다음 단계
- DAG - DAG 개념과 정의 방법
- Task - Task의 역할과 속성
- Operators - 다양한 Operator 사용법
- Scheduling - 스케줄링 설정