brief.ing.gg

WIKI

워크플로 오케스트레이션

워크플로 오케스트레이션

여러 작업의 실행 순서·재시도·스케줄·상태를 관리하는 오케스트레이션은 무엇인가.

Scope

핵심 질문

여러 작업의 의존성·스케줄·재시도·상태를 중앙에서 관리하는 워크플로 오케스트레이션은 무엇인가?

Research

핵심 근거

  • 워크플로 오케스트레이션은 단순한 cron보다 작업 간 의존성, 재시도, 상태 추적, backfill, 관찰성을 함께 다룬다.
  • DAG는 흔한 표현 방식이지만 동적 분기·이벤트 기반 실행까지 포함하면 모든 워크플로가 정적 DAG인 것은 아니다.
  • 오케스트레이터와 실제 비즈니스 로직을 분리하면 재실행과 운영이 쉬워진다.

참고 자료

  • Apache Airflow scheduler: https://airflow.apache.org/docs/apache-airflow/stable/concepts/scheduler.html
  • Prefect flows: https://docs.prefect.io/latest/tutorial/flows

Draft

워크플로 오케스트레이션은 여러 작업을 어떤 순서로 실행하고, 실패했을 때 어떻게 재시도하며, 현재 어디까지 진행됐는지를 관리하는 시스템이다.

단순한 cron은 특정 시각에 명령을 실행하는 데 강하지만 작업 A가 성공한 뒤에만 B를 실행하고, B가 실패하면 세 번 재시도하고, 과거 날짜를 다시 돌리는 식의 운영 요구까지 다루기 어렵다. 오케스트레이터는 이런 실행 제어를 애플리케이션 로직과 분리한다.

핵심 기능

대부분의 오케스트레이터는 스케줄링, 의존성 관리, 재시도, 상태 저장, 로그, 알림, 과거 실행 재처리를 제공한다. 데이터 파이프라인에서는 backfill과 parameterized run도 중요하다.

DAG와 동적 실행

Airflow처럼 DAG를 중심 모델로 삼는 시스템이 많다. DAG는 작업 간 선후관계를 명확하게 표현하기 좋다. 하지만 실제 워크플로에는 조건 분기, 동적 task 생성, 이벤트 대기, 사람 승인처럼 정적 DAG로만 설명하기 어려운 흐름도 있다.

좋은 경계

오케스트레이터 안에 모든 비즈니스 로직을 넣기보다 task는 독립적으로 실행 가능한 코드로 두고, 오케스트레이터는 순서와 상태를 관리하는 편이 유지보수에 유리하다.

언제 필요한가

작업이 하나이고 실패 시 수동 재실행으로 충분하면 cron이나 systemd timer가 더 단순할 수 있다. 작업 수가 늘고 의존성·재처리·관찰성이 중요해질 때 오케스트레이션의 가치가 커진다.

핵심은 '코드를 실행하는 도구'가 아니라 '실행의 상태와 관계를 관리하는 제어계층'이라는 점이다.