전체 그래프
Airflow

Airflow

data-engineeringtool/airflowmoc

상위: Data Engineering

개요

Python 기반 워크플로우 오케스트레이션 도구로, DAG를 통해 작업 의존성을 관리하고 스케줄링/모니터링을 제공합니다. 배치 처리 워크플로우에 최적화되어 있으며, 다양한 외부 시스템과 통합 가능합니다.

시작하기

학습 순서 (초보자 권장)

  1. Introduction - Airflow 기본 개념 이해, 설치
  2. DAG - DAG 개념과 정의 방법
  3. Task - Task의 역할과 속성
  4. Operators - 다양한 Operator 사용법
  5. Task Dependencies - Task 간 의존성 설정
  6. Scheduling - Cron 표현식, Schedule Interval, Catchup
  7. Trigger Rules - Task 실행 조건 제어
  8. XCom - Task 간 데이터 전달
  9. Variable - 전역 변수 관리
  10. Branching - 조건부 실행 흐름
  11. TaskGroup - DAG 구조화
  12. Connections & Hooks - 외부 시스템 연동
  13. Spark Integration - Spark와 연동

빠른 시작 (Quick Start)

# 1. docker-compose.yaml 다운로드
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.10.5/docker-compose.yaml'

# 2. 디렉토리 생성
mkdir -p ./dags ./logs ./plugins ./config

# 3. 환경변수 설정
echo -e "AIRFLOW_UID=$(id -u)" > .env

# 4. 초기화  실행
docker compose up airflow-init
docker compose up

# 5. Web UI 접속: http://localhost:8080
# ID: airflow / PW: airflow

주요 문서

Core Concepts (핵심 개념)

  • Introduction - 워크플로우 오케스트레이션, 설치
  • DAG - Directed Acyclic Graph 개념
  • Task - Task 정의와 LifeCycle
  • Operators - 다양한 Operator 종류와 사용법

Scheduling & Dependencies (스케줄링 & 의존성)

Data & Communication (데이터 & 통신)

Advanced Features (고급 기능)

Integration (통합)

  • Spark Integration - Spark 연동, SparkSubmitOperator

자주 사용하는 패턴

기본 ETL 패턴

extract >> transform >> load

병렬 처리 패턴

start >> [task1, task2, task3] >> merge >> end

분기 처리 패턴

branch >> [task_A, task_B]

더 많은 패턴은 각 문서 참조

주의사항 / 함정

DAG 작성 시

  • DAG 파일은 빠르게 파싱되어야 함: 무거운 연산 금지
  • Task 간 직접 데이터 전달 불가: XCom 또는 외부 스토리지 사용
  • 순환 의존성 금지: DAG는 Acyclic이어야 함

XCom 사용 시

  • 대용량 데이터 전달 금지: 작은 데이터만 사용
  • 대용량은 S3 경로만 XCom으로 전달

Scheduling

  • start_date는 과거로 설정: 미래 시간 설정 시 실행 안됨
  • execution_date ≠ 실행 시간: 데이터 기준 시간
  • catchup=True 주의: 과거 모든 스케줄 실행 가능성

Variable

  • DAG 파싱 시 Variable.get() 금지: Task 내부에서만 사용
  • 파싱 시마다 DB 접근하여 성능 저하

Trigger Rule

  • 분기 후 합류 시 trigger_rule 필수: none_failed_or_skipped 사용
  • 기본값 all_success는 skipped Task를 실패로 간주

더 자세한 내용은 각 문서의 주의사항 섹션 참조

링크 맵

Airflow/
├── Introduction (설치, 개요)
├── Core Concepts
   ├── DAG
   ├── Task
   └── Operators
├── Scheduling
   ├── Scheduling (Cron, Interval)
   ├── Task Dependencies
   └── Trigger Rules
├── Data & Communication
   ├── XCom
   ├── Variable
   └── Connections & Hooks
├── Advanced
   ├── Branching
   └── TaskGroup
└── Integration
    └── Spark Integration

관련 도구

참고 자료