Cloud

Airflow란?

Yunny52 2023. 5. 3. 19:54

멀티 클라우드 플랫폼을 개발할 때 필요한 툴 중 하나인 Airflow에 대해 알아봤다!

Airflow 자체를 처음 접했던 거라,, 아주 기초적인 내용부터 다루고자 한다.

 

 

📌 Apache Airflow란?

  • 초기 에어비앤비(Airfbnb) 엔지니어링 팀에서 개발한 오픈소스 워크플로우 관리 플랫폼
  • 프로그래밍 방식으로 워크플로우를 작성, 예약 및 모니터링
  • 즉, 복잡한 워크플로우를 프로그래밍 방식으로 작성해서 스케줄링하고, 모니터링할 수 있는 플랫폼

 

 

📌 Airflow Key Concept

1️⃣ DAG (Directed Acyclic Graph)

  • 순차적으로 작업이 이루어지며, 순환 실행을 방지한다.
  • 하나의 DAG 안에는 한 개 이상의 task가 있다.

DAG 스크립트 예시

 

 

2️⃣ Operator

  • 작업을 정의하는데 사용한다.
  • Operator 타입
    • Action Operator: 기능이나 명령을 실행. 실제 연산, 데이터 추출 및 프로세싱 수행.
    • Transfer Operator: 하나의 시스템을 다른 시스템으로 옮기는 역할 수행.
    • Sensor Operator: 조건이 만족할 때까지 기다렸다가 조건이 충족되면 다음 task를 실행시키는 역할 수행

 

 

3️⃣ Task & Task Instance

  • Task
    • 데이터 파이프라인에 존재하는 operator를 의미
    • Operator를 실행하면 task가 됨
  • Task Instance
    • 데이터 파이프 라인이 Trigger되어 실행될 때 생성된 Task

태스크 실행 순서 - (오른쪽) 시프트 연산자를 사용하여 정의

 

 

#️⃣ Operator vs Task

 operator와 task가 같은 의미로 느껴질 수 있지만, 사용자는 각 환경별 작업이 잘 이루어지는지 확인하기 위해 operator 내 코드를 구성하고, airflow는 각 operator 내의 구성 요소들이 전부 잘 맞을 경우 task를 올바르게 실행하기에 차이가 있다.

 

 

📌 Airflow Component

Airflow 주요 구성요소에 대한 개요

 

  • Webserver: 웹 대시보드 UI로, 스케줄러에서 분석한 DAG를 시각화하고 DAG 실행과 결과를 확인할 수 있는 인터페이스를 제공한다.
  • Scheduler: DAG를 분석하고 현재 시점에서 DAG의 스케줄이 지난 경우 Airflow worker에 DAG의 task를 예약한다.
  • Worker: 예약된 task를 실제로 실행시킨다.
  • Metastore:Airflow에 있는 DAG, task 등의 메타데이터를 관리한다.
  • Executor: task가 어떻게 실행되는지 정의한다.

 

 

📌 Airflow 기본 동작 원리

Airflow를 이용해 DAG 파이프라인을 개발하고 실행하는 과정에 대한 개요

 

  1. 사용자가 DAG로 새로운 워크플로우를 작성하면 DAG 폴더 안에 파이썬 파일이 배치된다.
  2. Airflow Scheduler가 DAG 내용을 파싱하여 읽어온다.
    1. Scheduler가 DAG Run 오브젝트를 생성하는데, 이는 사용자가 작성한 DAG가 인스턴스화된 것이다. 이때 DAG Run의 상태는 "Running"이며, 이들은 Metastore에 전달된다.
    2. DAG Run 오브젝트는 task instance를 생성하고, Scheduler는 task instance를 스케줄링한다.
    3. task가 여러 개라면, Metastore와 task의 처리 상태를 업데이트하면서 실행한다.
    4. DAG의 예약된 시간이 지났다면 task를 예약한다. 예약된 task가 존재하는 동안 task 간의 의존성을 확인하고, 의존성이 모두 해결되었다면 실행할 task를 대기열에 추가한다.
  3. Airflow Worker는 예약된 task, 즉 대기열에 추가된 task를 실행하고 결과를 반환한다.
    1. 반환된 task 실행 결과는 Airflow Metastore에 저장된다. 
    2. Scheduler는 DAG 실행이 완료되었는지 Metastore를 통해 확인 후에 DAG Run의 상태를 "Completed"로 변경한다.
  4. Airflow Webserver에 DAG 목록과 task 결과가 전달되면, 사용자는 웹 인터페이스를 통해 task 실행과 결과를 모니터링할 수 있다.

 

 

📌 Airflow 장단점

  • 장점
    • 동적인 데이터 파이프라인: 데이터 파이프라인을 정의하는데 파이썬을 이용하기 때문에 파이썬으로 가능한 대부분의 작업을 에어플로우 파이프라인에서 처리할 수 있으며, 동적인 구성이 가능하다.
    • 뛰어난 확장성: 파이썬 코드를 이용하여 파이프라인을 구현하므로, 파이썬 기반으로 쉽게 확장 가능하고 다양한 시스템과 통합 가능하다.
    • 편리한 사용자 인터페이스: 웹 서버에서 제공하는 인터페이스를 통해 데이터 파이프라인을 모니터링하고 관리하기 편리하다.
  • 단점
    • Airflow는 반복적이거나 배치 태스크를 실행하는 기능에 초점이 맞춰져 있기에, Data streaming solution에 적용하기엔 적합하지 않다.
    • 파이썬 경험이 없는 경우 DAG 구성에 어려움이 있을 수 있다.