본문 바로가기
● Data Insights/System

(Airflow) Workflow Orchestration: Airflow 개념과 구조

by DATA Canvas 2025. 10. 3.
반응형

Apache Airflow는 워크플로우 오케스트레이션(Workflow Orchestration) 도구로, 복잡한 데이터 파이프라인(ETL/ELT)을 코드로 정의하고 스케줄링, 모니터링, 관리할 수 있게 해준다. 온프레미스뿐 아니라 클라우드 환경에서도 유연하게 배포 가능하며, 확장성·유연성을 극대화할 수 있다는 점이 가장 큰 장점이다.


1. Airflow란 무엇인가?

Apache Airflow는 Python 기반의 오픈소스 워크플로우 관리 플랫폼이다.

  • 프레임워크 유형: Workflow Orchestration Framework
  • 주요 기능:
    • DAG(Directed Acyclic Graph) 정의
    • Task 스케줄링 및 실행
    • 실시간 모니터링(Web UI)
    • 알림(Notifications) 및 로그 관리
반응형

2. On-Premise vs Cloud

  • 온프레미스(On-Premise):
    • 자체 서버에 설치 가능
    • 네트워크·보안 정책 직접 제어
    • 관리 오버헤드 존재
  • 클라우드(Cloud):
    • Managed 서비스(AWS MWAA, Google Cloud Composer, Azure Data Factory Integration Runtime)
    • 인프라 설정·업그레이드 자동화
    • 확장성(auto-scaling) 제공

3. 역사 및 유래(History)

  • 창시: Airbnb에서 2014년 내부 ETL 도구로 시작
  • 오픈소스화: 2015년 Apache Software Foundation 프로젝트로 기여
  • 성장: 글로벌 커뮤니티 확대, 다양한 Executor(예: Celery Executor, Kubernetes Executor) 지원

4. 주요 용도(Use Cases)

  • ETL 파이프라인 설계 및 운영
  • 데이터 레이크 적재 자동화
  • 머신러닝 워크플로우 학습·배포 스케줄링
  • 보고서·알림 자동화
  • 대용량 배치 작업 체계적 관리

5. 베이스 시스템(Base System)

  • 언어: Python
  • 메타데이터 DB: PostgreSQL, MySQL 등
  • 메시지 브로커(Executor):
    • Celery Executor (RabbitMQ, Redis)
    • Kubernetes Executor
    • LocalExecutor, SequentialExecutor
  • 웹서버(Webserver): Flask + React
  • 스케줄러(Scheduler): Python 프로세스

6. 구조 상세(Architecture)

  1. DAG(Directed Acyclic Graph):
    • Task 간 의존성 정의
    • Python 스크립트(.py) 파일로 작성
  2. Scheduler:
    • DAG 파싱 및 Task 인스턴스 생성
    • 실행 시점 결정
  3. Executor:
    • 실제 Task 실행
    • Celery/Kubernetes/Local 모드
  4. Web UI:
    • DAG 상태, Task log, Graph View 제공
  5. Metadata Database:
    • DAG·Task 상태, 로그, 변수 저장
  6. Worker:
    • Executor에 따라 Task 실행 환경
flowchart LR
  subgraph WebServer
    UI[Web UI]
  end
  subgraph Scheduler
    SC[Scheduler]
  end
  subgraph Workers
    W1[Worker1] -->|Celery/K8s| TaskExec
  end
  UI --> SC --> DB[(Metadata DB)]
  SC --> W1

7. 장점(Pros)

  • 코드 기반 정의(Code as Configuration): Python 활용, 유연한 로직 작성
  • 확장성(Scalability): 수평 확장, Kubernetes 통합
  • 모니터링(Monitoring): 실시간 UI, 알림, 로그
  • 커뮤니티 지원: 풍부한 플러그인, 연동 커넥터(Operator)
  • 재사용성(Reusability): Custom Operator, Sensor 작성

8. 단점(Cons)

  • 초기 설정 복잡도: DB·Executor 구성
  • 실시간 처리 미지원: 주로 배치 지향
  • 버전 호환성 이슈: Python/Airflow 버전 제약
  • 리소스 과다 사용 가능성: 잘못된 스케줄링 시 오버헤드

9. Airflow를 사용하려면 알아야 할 Key Terms

  • DAG(Directed Acyclic Graph): 워크플로우의 Task 흐름
  • Task: 실행 단위, Operator가 구현
  • Operator: Task 로직(예: BashOperator, PythonOperator, PostgresOperator)
  • Sensor: 특정 이벤트 대기(예: FileSensor, HttpSensor)
  • Hook: 외부 시스템 연결(interface)
  • XCom: Task 간 데이터 교환 메커니즘
  • Executor: Task 실행 방식
  • Scheduler Interval: DAG 실행 주기(cron 표현식)
  • Airflow Variables & Connections: 환경 설정 데이터 저장소
  • Airflow Plugins: 확장 기능 모듈
반응형