개요

Data Pipeline Orchestration(데이터 파이프라인 오케스트레이션)은 데이터 파이프라인(ETL/ELT), ML 파이프라인, 배치 작업 등을 스케줄링·실행·모니터링·관리하는 도구/방법론입니다. “워크플로우의 워크플로우를 관리”하는 역할입니다.

핵심 개념

개념설명
DAG (Directed Acyclic Graph)태스크 간 의존 관계를 방향성 비순환 그래프로 정의
Task실행 단위 (Python 함수, SQL 쿼리, API 호출 등)
Flow / Pipeline / DAG태스크들의 워크플로우
Schedule실행 주기 (Cron, 이벤트 트리거 등)
Retry실패 시 자동 재시도
Backfill과거 시점 데이터 재처리
Sensor / Trigger외부 이벤트 감지 후 실행

주요 도구

Prefect

항목내용
개발Prefect Technologies
언어Python
핵심데코레이터 기반 — 기존 Python 코드에 @flow, @task만 추가
호스팅Prefect Cloud (매니지드) / Prefect Server (셀프호스팅, 오픈소스)
라이선스Apache 2.0
GitHubhttps://github.com/PrefectHQ/prefect
from prefect import flow, task
 
@task(retries=3, retry_delay_seconds=10)
def extract():
    return [1, 2, 3]
 
@task
def transform(data):
    return [x * 2 for x in data]
 
@flow(name="my-pipeline", log_prints=True)
def my_pipeline():
    data = extract()
    result = transform(data)
    print(result)  # [2, 4, 6]
 
my_pipeline()

특징:

  • 동적 워크플로우: DAG 사전 정의 불필요, 일반 Python if/for 사용
  • Prefect Cloud: UI 대시보드, 스케줄링, 알림, RBAC
  • Work Pools: K8s, Docker, AWS ECS, 로컬 프로세스 등 다양한 실행 환경
  • 캐싱: 태스크 결과 캐싱 (재실행 시 스킵)
  • 동시성/비동기: async 네이티브 지원, 동시 실행
  • 아티팩트: 결과물 추적 (마크다운 리포트, 테이블 등)
  • 이벤트 트리거: Webhook, 파일 변경, 다른 Flow 완료 시 등

Prefect 2 vs 3:

  • Prefect 3 (2024+): prefect.yaml 기반 배포, Work Pools 중심
  • Prefect 2→3: Agent → Worker 전환, 간소화

Apache Airflow

항목내용
개발Apache Foundation (원래 Airbnb)
언어Python
핵심DAG 기반 워크플로우 오케스트레이션의 원조, 가장 큰 생태계
호스팅셀프호스팅 / Google Cloud Composer / AWS MWAA / Astronomer
라이선스Apache 2.0
GitHubhttps://github.com/apache/airflow
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime
 
def extract(): return [1, 2, 3]
def transform(): return [x * 2 for x in extract()]
 
with DAG('my_dag', start_date=datetime(2026, 1, 1), schedule='@daily'):
    t1 = PythonOperator(task_id='extract', python_callable=extract)
    t2 = PythonOperator(task_id='transform', python_callable=transform)
    t1 >> t2

특징:

  • 데이터 파이프라인 오케스트레이션의 사실상 표준
  • 2,000+ 프로바이더 패키지 (AWS, GCP, Snowflake, dbt 등)
  • 강력한 UI (DAG 시각화, 로그, Gantt 차트)
  • XCom: 태스크 간 데이터 전달
  • Sensor: 외부 이벤트 대기 (S3 파일 도착, DB 변경 등)
  • TaskFlow API (2.0+): 데코레이터 기반으로 현대화

단점:

  • 설정/운영 복잡 (Scheduler, Webserver, Worker, DB, Redis)
  • DAG 사전 정의 필수 (동적 워크플로우 제한적)
  • 로컬 테스트 어려움
  • 무거움 (소규모 프로젝트에 과도)

Dagster

항목내용
개발Dagster Labs
언어Python
핵심데이터 자산(Asset) 중심 — “무엇을 만드는가”에 초점
호스팅Dagster Cloud (매니지드) / 셀프호스팅 (오픈소스)
라이선스Apache 2.0
GitHubhttps://github.com/dagster-io/dagster
from dagster import asset
 
@asset
def raw_users():
    """원본 사용자 데이터"""
    return extract_from_api()
 
@asset
def clean_users(raw_users):
    """정제된 사용자 데이터"""
    return raw_users.dropna()
 
@asset
def user_report(clean_users):
    """사용자 리포트"""
    return clean_users.describe()

특징:

  • Software-Defined Assets: 태스크가 아닌 “자산”으로 파이프라인 정의
  • Dagster+ (Cloud): 브랜치 배포, 인사이트, 알림
  • IO Manager: 자산 저장/로드 추상화 (S3, DB 등)
  • Type System: 입출력 타입 검증
  • Partition: 시간/카테고리별 자동 파티셔닝
  • dbt 네이티브 통합: dbt 모델을 Dagster 자산으로 자동 매핑
  • 테스트 용이: 로컬에서 자산 단위 테스트 가능

Mage

항목내용
개발Mage AI
언어Python
핵심노트북 스타일 UI + 파이프라인 오케스트레이션
라이선스Apache 2.0
GitHubhttps://github.com/mage-ai/mage-ai

특징:

  • 브라우저에서 노트북처럼 코드 작성 → 파이프라인 자동 생성
  • 블록 기반: Loader → Transformer → Exporter
  • 실시간 스트리밍 파이프라인 지원
  • AI 기반 파이프라인 생성 (자연어 → 코드)
  • Airflow보다 훨씬 쉬운 시작

Temporal

항목내용
개발Temporal Technologies
언어Go, Java, Python, TypeScript, .NET
핵심장기 실행 워크플로우 (분월 단위), 내결함성
라이선스MIT
GitHubhttps://github.com/temporalio/temporal

특징:

  • 데이터 파이프라인보다 비즈니스 워크플로우 특화 (주문 처리, 결제 등)
  • Workflow = 코드, Activity = 외부 호출
  • 자동 재시도, 상태 복구, 타이머
  • 마이크로서비스 오케스트레이션에 강함

기타

도구특징
LuigiSpotify 개발, Airflow 이전 세대, 경량
Argo WorkflowsKubernetes 네이티브 워크플로우 (YAML)
Apache BeamGoogle Dataflow, 통합 배치+스트리밍
KedroML 파이프라인 특화, 프로젝트 템플릿
KestraYAML 기반, 언어 무관, UI 강점
n8n노코드 자동화 (Zapier 대안, 셀프호스팅)
Apache NiFi데이터 흐름 자동화, GUI 기반, IoT/실시간
dbtSQL 변환 특화 (오케스트레이션보다 Transformation)

비교

도구패러다임동적 워크플로우UI난이도생태계최적 용도
AirflowDAG (태스크 중심)제한적강력높음최대범용 배치, 엔터프라이즈
Prefect데코레이터 (코드 중심)완전좋음낮음중간Python 파이프라인, 현대적
DagsterAsset 중심좋음좋음중간중간데이터 자산 관리, dbt
Mage노트북 블록좋음최고최저작음빠른 시작, 프로토타입
Temporal코드 중심완전기본중간중간비즈니스 워크플로우
KestraYAML 선언적좋음좋음낮음성장 중언어 무관, 범용
Argo WorkflowsK8s YAML좋음기본높음K8sK8s 네이티브

Airflow vs Prefect vs Dagster

항목AirflowPrefectDagster
철학”태스크를 언제 실행?""코드를 관찰 가능하게""자산을 어떻게 만들지?”
정의 방식DAG + Operator@flow + @task@asset
동적 워크플로우△ (Dynamic Task Mapping)O (순수 Python)O
로컬 테스트어려움쉬움 (그냥 Python 실행)쉬움
운영 복잡도높음 (5+ 컴포넌트)낮음중간
커뮤니티최대중간중간
매니지드Astronomer, MWAA, ComposerPrefect CloudDagster Cloud
dbt 통합Operator지원네이티브
적합 규모중~대소~대중~대

선택 가이드(Selection Guide)

상황추천
기존 Airflow 사용 중Airflow (마이그레이션 비용)
새 프로젝트, Python 중심Prefect (가장 쉬운 시작)
데이터 자산/dbt 중심Dagster
비개발자도 사용Mage or Kestra
비즈니스 워크플로우Temporal
K8s 네이티브Argo Workflows
엔터프라이즈 레거시Airflow (가장 큰 생태계)

관련 항목(Related)