Prefect 워크풀(Work Pool)
Prefect 워크풀(Work Pool)
워크풀(work pool)은 플로 런을 언제·어디서 실행할지 결정하는 실행 서비스의 묶음이에요. Prefect가 디플로이먼트를 실행할 때, 워크풀이 제공하는 실행 환경에서 플로 런을 생성해요. 워크풀에 워커(worker)를 붙이면 워커가 플로 런을 받아 실제로 실행하는 구조예요.
워크풀의 역할
워크풀은 디플로이먼트가 요청한 플로 런을 어느 인프라에서 돌릴지 중개하는 역할을 해요. 예를 들어 로컬 프로세스 워크풀은 로컬 머신에서 플로 런을 실행하고, 쿠버네티스 워크풀은 클러스터에 파드로 실행해요. 실행 인프라를 워크풀 단위로 바꾸면 디플로이먼트 설정만 바꿔서 실행 환경을 전환할 수 있어요.
워커(Worker)와의 관계
워크풀은 그 자체로는 대기열(queue) 같은 역할을 하고, 실제 실행은 워커(worker) 프로세스가 담당해요. 워커는 워크풀에 들어온 플로 런을 지속적으로 확인하고, 디플로이먼트가 정의한 실행 환경에서 그 플로 런을 실행해요. 워커는 실행 인프라(예: 쿠버네티스 클러스터)에 배포해서 운영하는 경우가 많아요.
워크풀을 쓰는 이유
- 실행 인프라를 코드·구성과 분리해서 유지
- 다양한 태스크 환경(로컬/클라우드/쿠버네티스)을 한 Prefect 인스턴스에서 관리
- 디플로이먼트와 실행 환경을 느슨하게 연결해 인프라 교체를 쉽게
이 구조 덕분에 개발 중에는 로컬 워크풀, 프로덕션에서는 쿠버네티스 워크풀로 같은 디플로이먼트를 유연하게 돌릴 수 있어요.
더 알아보기
- 디플로이먼트: Prefect Deployments
- 실행 이력: Flow Runs