Workflow Orchestration

데이터 파이프라인의 스케줄링·의존성·재시도·관측성을 관리하는 계층


핵심 개념

Workflow Orchestration은 “무엇이 먼저 실행되고, 한 step이 실패하면 무슨 일이 일어나며, 일부만 안전하게 재실행하려면 어떻게 하는가”를 답하는 계층이다. 오케스트레이션 로직(조율)을 비즈니스 로직(실제 처리)에서 분리하는 것이 핵심 원칙이며, Apache Airflow가 사실상의 표준이다.

모놀리식 스케줄러의 안티패턴 (Helpshift)

자체 제작 스케줄러가 성장하며 빠지는 함정:

  • 단일 monolithic step: 모든 파이프라인을 한 step에 묶으면 한 파이프라인 실패 = 전체 실패
  • 스텝별 모니터링 부재: on-call 시 어느 부분이 문제인지 파악 불가
  • 분산된 컨텍스트: 워크플로 이해에 여러 파일·설정·DB 테이블을 뒤져야 함 → 온보딩 지연, 작은 변경도 조심스러운 조율 필요
  • 답할 수 없는 기본 질문: “무엇이 먼저 실행되나? 이 step이 실패하면? 한 부분만 안전하게 재실행하려면?”

Airflow가 해결하는 것

  • Python DAG: 의존성·retry·스케줄링이 한눈에 보임. Python 친숙도로 온보딩 가속
  • Fault isolation: 한 task 실패가 전체를 죽이지 않음, 실패 task만 재실행
  • 관측성: task-level 로그, retry history, execution timeline, 명확한 성공/실패 상태
  • 내장 기능: configurable retry, historical backfill, time/event 기반 스케줄링 → 커스텀 로직 제거
  • 오케스트레이션/비즈니스 로직 분리: DAG = 조율, Spark/Hive/Presto = 독립 실행 → 테스트·추론·진화 용이

컴퓨트와의 분리 패턴

Airflow는 조율만 담당하고 컴퓨트는 transient 클러스터에서 실행: 트리거 → EMR 클러스터 생성 → EMR operator로 step 제출 → EmrStepSensor 폴링 → 완료 시 클러스터 종료(idle 비용 방지). 로그는 S3·CloudWatch 연동, Airflow task → step 로그로 직접 네비게이션.

마이그레이션 전략

모놀리식 → Airflow 이전의 안전한 접근(→ Large-Scale Data Migration 철학 공유):

  • 기존 스케줄러 개념을 Airflow primitive로 매핑(파이프라인 → DAG, step → task, 암묵적 의존성 → 명시적 DAG 관계)
  • 점진적 롤아웃: 저위험 워크플로 먼저, 레거시와 병렬 운영, 실행 시간·EMR instance-hour·완료율·실패 패턴 비교 후 중요 파이프라인 점진 이전

멀티팀 DAG 배포

여러 팀이 DAG를 독립 배포할 때 Helm 의존성을 없애는 패턴은 Data Mesh and Federation 및 Airflow DAG Bundles 참조(→ Airflow DAG Bundles): S3 번들 + 사이드카로 30초 핫 리로드.

연관 개념


Source: Migrating from a Monolithic Orchestrator to Apache Airflow, Airflow DAG Bundles