Airflow
Airflow란 무엇인가?
- 데이터 파이프라인을 효율적이고 안정적으로 실행, 관리하기 위한 오픈소스 기반의 Workflow 오케스트레이션 플랫폼이다.
Airflow의 장점
- 코드 기반의 Workflow 작성 덕분에 매우 높은 자유도 제공
- 오픈 소스 기반의 저비용 구축 가능
- 다양한 시스템과의 손쉬운 연동(Database, NoSQL, Cloud, Messaging, AI)
- 막강한 인지도를 기반으로 데이터 파이프 구축을 위한 표준 툴
Airflow의 단점
- Code 기반의 Workflow로 인한 난이도 상승
- 개발자의 개발 스타일에 따라 실행 흐름과 의존성을 한눈에 파악하기 어려울 수 있음.
- Python 기반 작성으로 인한 프로그래밍 언어의 장벽
- 기존 ETL 혹은 Orchestration 툴 대비 좀 더 복잡한 구조
- Scheduler, API 서버, Executor, Worker, Metadata, DB 등 여러 컴포넌트로 구성된 비교적 복잡한 아키텍쳐를 가지게 됨.
- 버전 변경으로 인한 빈번한 기능 변경
- 오픈소스 기반이므로 많은 사람들의 개발 영향으로 버전 변경에 따른 비번한 기능 변경이 이뤄진다.
Dag, Task, Task Dependency란 무엇인가?
Dag(Directed Acyclic Graph)
- Task들의 흐름과 순서를 정의한 Workflow, 순환 Dependency를 허용하지 않는다.
Task
- DAG 안에서 구동되는 독립적인 실행 단위
Operator
- Task를 쉽게 수행할 수 있도록 미리 구현된 작업 단위
TaskFlow API
- Python 함수 기반으로 Task를 정의할 수 있게 해주는 Airflow의 고수준 API
- Python Operato를 사용하여 함수 단위로 DAG를 작성하는 방식으로 인식
- Python decorator @task를 이용하여 작성
Sensor
- 시스템의 상태를 주기적으로 확인하여, 지정한 조건이 충족될 때까지 Task의 실행을 지연시키는 Operator의 한 종류
- FileSensor, HttpSensor, SqlSensor
Task Dependency
- Task들의 흐름과 순서를 특정 기호를 이용해 정의
-
, <<, set_upstream, set_downstream, chain