워크플로우 및 파이프라인: Prefect
ㅁ 워크플로우 및 파이프라인
ㅇ 정의:
데이터 처리 과정을 자동화하고 체계적으로 관리하기 위한 기술로, 작업 흐름(workflow)과 데이터를 처리하는 파이프라인을 설계하고 실행하는 도구 및 프레임워크를 포함.
ㅇ 특징:
– 작업 간의 의존성을 정의하고 실행 순서를 관리.
– 오류 발생 시 재실행 및 복구 기능 제공.
– 작업 상태를 모니터링하고 로그를 기록.
ㅇ 적합한 경우:
– 복잡한 데이터 처리 워크플로우를 체계적으로 관리해야 하는 경우.
– 데이터 파이프라인의 자동화 및 확장성을 필요로 하는 경우.
ㅇ 시험 함정:
– 워크플로우와 파이프라인의 차이를 혼동하는 경우.
– 특정 도구의 기능을 일반화하여 출제되는 경우.
ㅇ 시험 대비 “패턴 보기” 예시:
– O: 워크플로우는 작업 간의 의존성을 정의하고 실행 순서를 관리한다.
– X: 모든 파이프라인 도구는 실시간 데이터 처리를 지원한다.
================================
1. Prefect
ㅇ 정의:
오픈소스 워크플로우 관리 도구로, 데이터 파이프라인의 설계, 실행, 모니터링, 오류 복구를 지원.
ㅇ 특징:
– Python 기반으로 설계되어 기존 코드와 통합이 용이.
– 작업 상태를 실시간으로 모니터링 가능.
– 오류 발생 시 자동 재시도 및 알림 기능 제공.
ㅇ 적합한 경우:
– Python 환경에서 데이터 파이프라인을 설계하고 관리하려는 경우.
– 복잡한 워크플로우를 체계적으로 관리하고자 하는 경우.
ㅇ 시험 함정:
– Prefect와 유사한 도구(Airflow, Luigi 등)와 혼동하는 경우.
– Prefect의 기능을 과대 또는 과소평가하는 경우.
ㅇ 시험 대비 “패턴 보기” 예시:
– O: Prefect는 Python 기반으로 설계되어 기존 코드와 쉽게 통합된다.
– X: Prefect는 데이터 시각화 도구로 사용된다.
ㅁ 추가 학습 내용
Prefect와 관련된 주요 학습 개념은 다음과 같이 정리할 수 있습니다:
1. Task와 Flow:
– Task는 Prefect에서 작업의 기본 단위로, 특정 작업이나 계산을 수행하는 개별적인 구성 요소를 의미합니다.
– Flow는 여러 Task를 연결하여 작업의 전체 워크플로를 정의하는 구조입니다. Task 간의 의존성을 설정하여 작업의 실행 순서를 제어합니다.
2. DAG(Directed Acyclic Graph) 구조:
– DAG는 방향성이 있는 비순환 그래프로, 작업 간의 의존 관계를 표현하는 데 사용됩니다.
– Prefect에서 DAG는 Flow 내부에서 Task 간의 관계를 정의하는 방식으로 구현됩니다.
– DAG 구조를 활용하면 작업 순서를 명확히 하고, 병렬 처리 및 의존성 관리를 효율적으로 수행할 수 있습니다.
3. Prefect Cloud와 Prefect Core의 차이점:
– Prefect Core는 오픈 소스 워크플로 관리 도구로, 로컬 환경에서 워크플로를 정의하고 실행하는 데 중점을 둡니다.
– Prefect Cloud는 상업용 서비스로, Prefect Core를 기반으로 하며, 중앙 집중식 대시보드, 모니터링, 알림, 실행 관리와 같은 추가 기능을 제공합니다.
4. DAG 구조의 추가 학습:
– DAG에서 순환이 발생하지 않도록 작업 간 의존성을 정의하는 방법.
– Prefect에서 Task 간의 관계를 설정하기 위해 사용하는 API 및 코드 예제.
– DAG 구조를 시각화하고 디버깅하는 방법.
5. Prefect와 경쟁 도구(Airflow, Luigi) 비교:
– Airflow: DAG 중심의 워크플로 정의, 강력한 스케줄링 기능, 복잡한 의존성 관리에 적합.
– Luigi: 파일 기반의 워크플로 관리에 강점, 경량화된 설계, 단순한 의존성 처리.
– Prefect: Pythonic한 워크플로 정의, 유연한 DAG 관리, Prefect Cloud를 통한 추가 기능 제공.
시험 대비를 위해 DAG 구조와 Prefect의 경쟁 도구와의 차이점에 대해 심도 있는 이해와 실습을 진행하는 것이 중요합니다.