brief.ing.gg

WIKI

Prefect

Prefect

Python 코드 중심 오케스트레이션이 Airflow와 다른 점은 무엇인가.

Scope

핵심 질문

Prefect는 Python 코드 중심 오케스트레이션을 어떻게 구현하고 Airflow와 어떤 철학적 차이가 있는가?

Research

핵심 근거

  • Prefect는 Python 함수에 flow/task decorator를 적용해 워크플로를 정의할 수 있다.
  • 실행 상태 추적, retry, deployment, event/schedule trigger를 제공한다.
  • 정적 DAG 정의보다 런타임 Python 제어흐름을 자연스럽게 허용하는 쪽에 가깝다.

참고 자료

  • Prefect flows: https://docs.prefect.io/latest/tutorial/flows
  • Prefect docs: https://docs.prefect.io/

Draft

Prefect는 일반 Python 코드에 가까운 형태로 워크플로를 작성하면서 상태 추적과 재시도, 배포, 스케줄링을 추가하는 오케스트레이션 시스템이다.

Python 함수가 중심이다

Prefect에서는 Python 함수에 flow decorator를 붙여 워크플로로 만들 수 있다. task 역시 함수 단위로 정의할 수 있다. 이 접근은 별도의 DSL보다 기존 Python 제어문과 라이브러리를 자연스럽게 사용하는 데 초점을 둔다.

실행과 배포

로컬 함수 호출처럼 개발할 수 있지만 운영에서는 deployment와 worker/work pool을 이용해 특정 인프라에서 실행하도록 구성할 수 있다. 스케줄이나 이벤트로 flow run을 만들고 상태와 로그를 서버나 Cloud에서 추적한다.

Airflow와의 차이

Airflow가 DAG와 scheduler를 중심으로 '배치 작업의 구조'를 명시적으로 드러내는 데 강하다면 Prefect는 Python runtime의 동적 제어흐름을 더 자연스럽게 허용한다.

그래서 조건 분기나 동적으로 작업 수가 바뀌는 워크플로는 편할 수 있다. 반대로 조직이 DAG 중심 운영모델과 강한 표준화를 선호하면 자유로운 Python 구조가 오히려 일관성을 낮출 수 있다.

핵심

Prefect는 Python 프로그램을 오케스트레이션 가능한 실행단위로 확장하는 접근이다. 장점은 개발경험과 동적 제어이고, 비용은 별도의 상태 서버·배포 모델을 이해해야 한다는 점이다.