전체 그래프
Airflow

Introduction

data-engineeringtool/airflow

상위: 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 제공 → 직관적인 모니터링 가능
  • 재시도 및 알림 기능 → 장애 발생 시 자동 대응
  • 확장성 및 유연성 → 다양한 실행 환경 지원

Introduction

장단점

장점

  • 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 - 스케줄링 설정

참고 자료