Workflow Orchestration
Data Engineering Zoomcamp 2026 스터디의 모듈 2 내용을 정리했다.
💡 Data Lake 란?
- 정형, 반정형, 비정형 데이터를 포함한 모든 형태의 데이터를 원시(Raw) 상태 그대로 저장하는 대규모 중앙 저장소
- 특징:
- 데이터를 가공하지 않고 원본 그대로 저장하며, 데이터를 읽을 때 스키마를 정의하는 Schema-on-read 방식을 사용
- **비정형 데이터(텍스트, 이미지, 로그 등)**를 포함한 모든 종류의 데이터를 수용 가능
- 저장소와 컴퓨팅을 분리하여 저렴한 비용으로 무제한에 가까운 확장이 가능
- 목적: 데이터 과학자나 엔지니어가 머신러닝, 탐색적 데이터 분석, 스트리밍 분석 등을 수행하기 위해 사용
- 주의점: 메타데이터 관리나 데이터 거버넌스가 부재할 경우, 데이터가 무엇인지 알 수 없는 **데이터 늪(Data Swamp)**이 될 위험이 있음
💡 Kestra 란?
Kestra는 이벤트 네이티브 워크플로 오케스트레이터로, 스트리밍/이벤트 처리에 강점이 있으며 이벤트 작업 뿐만 아니라 배치 작업 또한 지원한다.
단 몇 줄의 YAML 코드만으로 UI에서 직접 안정적인 워크플로우를 구축할 수 있다. 고 홍보중인데, 깃허브의 리드미를 보면 밑과 같은 특징이 정리되어 있다.
주요 특징
- UI에서 워크플로우를 구축하더라도 Git 버전 관리와 통합되어 모든 프로세스를 코드로 유지
- 단순한 트리거 정의를 통해 정기 예약 작업과 실시간 이벤트 기반 자동화를 모두 지원
- 내장된 코드 에디터에서 단순한 설정 방식을 통해 워크플로우를 정의
- 수백 개의 내장 플러그인을 활용하여 모든 데이터베이스, 클라우드 스토리지, API에서 데이터를 추출하고 다양한 언어의 스크립트를 실행할 수 있음
- 구문 강조(Syntax Highlighting), 자동 완성, 실시간 구문 검증 기능을 갖춘 UI에서 워크플로우를 직접 구축하고 시각화
- 고가용성(High Availability) 및 결함 허용(Fault Tolerance)을 바탕으로 수백만 개의 워크플로우를 처리할 수 있도록 설계
- 내장 에디터에서 작성한 워크플로우를 Git 브랜치로 직접 푸시할 수 있어, CI/CD 파이프라인 및 버전 관리 시스템의 모범 사례를 구현
- 네임스페이스, 라벨, 서브플로우, 재시도, 타임아웃, 에러 핸들링, 입력/출력 유효성 검사, 변수, 조건부 분기, 동적 태스크 등을 통해 복잡한 워크플로우를 체계적으로 관리하고 복구 능력을 강화
- UI 또는 API 호출을 통해 워크플로우를 수정하면 YAML 정의가 자동으로 조정됨. 따라서 수정 방식(UI, CI/CD, Terraform, API)에 관계없이 오케스트레이션 로직은 항상 선언적 코드로 관리됨
🆚 kestra와 airflow 비교
그럼 궁금함이 생긴다.
그럼 기존까지 가장 자주 사용되던 Airflow와 차이점이 무엇일까?
kestra는 airflow와 유사한 점이 많다는 것을 아는지 공식 문서에 두 오케스트레이터의 비교를 올려놨다.
그런 걸 포함해서 내용을 정리했다.
| 구분 | Kestra | Airflow |
|---|---|---|
| 기본 개념 | 이벤트 기반 워크플로 오케스트레이터 | 배치 중심 워크플로 오케스트레이터 |
| 핵심 철학 | 선언형(YAML) + 이벤트 드리븐 | 코드 기반(Python) + 스케줄 드리븐 |
| 워크플로 정의 | YAML | Python (DAG) |
| 실행 모델 | Stateless 실행, 태스크 단위 격리 | Stateful 스케줄러 + 워커 |
| 스케줄링 | Cron + 이벤트 트리거 | Cron 기반 |
| 이벤트 트리거 | 강력 지원 (Webhook, Queue, File 등) | 제한적 (외부 연동 시 추가 작업 필요) |
| 데이터 파이프라인 | 스트리밍/이벤트 처리에 강점 | 배치 데이터 처리에 강점 |
| 플러그인/확장 | 내장 플러그인 중심 | 방대한 커뮤니티 플러그인 |
| 재시도/에러 처리 | YAML에서 명시적으로 설정 | Python 코드로 세밀하게 제어 |
| 배포/운영 | 단일 바이너리 + Docker 친화적 | 구성 요소 많음 (Scheduler, Webserver, Worker 등) |
개인적으로 둘을 잘 확인해본 해외 블로그 글은 여기에 있다.
kestra는 이벤트 네이티브라, Airflow가 가지고 있는 스케줄링의 한계를 극복할 수 있다는 점이 매력적이었다.