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

Dag 파일 만드는 방법