관리 메뉴

개발자의 스터디 노트

Airflow가 뭔가요? 본문

파이썬/Airflow

Airflow가 뭔가요?

박개발씨 2023. 6. 11. 01:42

이번 포스팅에서는 Apach Airflow가 무엇인지 간단히 살펴 보겠습니다.

 

1. 데이터 파이프 라인

 - 일반적인 데이터 파이프 라인은 원하는 결과를 얻기 위하여 여러 태스크 또는 동작으로 구성됩니다.

 

1.1 데이터 파이프라인 그래프

- 위와 같은 그래프처럼 방향성을 가진 그래프를 방향성 그래프라고 합니다.

- 이런 형태의 그래프를 방향성 비순환 그래프(Directed Acyclic Graph, DAG) 라고 부릅니다.

방향성 순환 그래프

위 그림과 같이 태스크간의 의존성을 가지고 있을 경우 그래프를 실행할 때 순환 의존성이 문제를 발생시킬 수 있습니다.

두번째 태스크와 세번째 태스크간의 의존성으로인해 교착상태로 이어지며, 두번째, 세번째 모두 실행 될수 없기때문에

그래프가 동작하지 않습니다.

 

2. Airflow란.

 - 워크플로를 개발하고 모니터링하기 위한 오픈소스 솔루션입니다. 파이썬 코드로 유연한 파이프라인을 정의할 수 있습니다.

 

2.1 Airflow 구성요소

출처 : Apache Airflow 기반의 데이터 파이프라인

 - Airflow 스케줄러 : DAG를 분석하고 현재 시점에서 DAG의 스케줄이 지난 경우 Airflow 워커에 DAG의 태스크를 예약 합니다.

 - Airflow 워커 : 예약된 태스크를 선택하고 실행합니다.

 - Airflow 웹 서버 : 스케줄러에서 분석한 DAG를 시각화 하고 DAG 실행과 결과를 확인할 수 있는 주요 인터페이스를 제공합니다.

 

2.2 Airflow 스케줄러

출처 : Apache Airflow 기반의 데이터 파이프라인

 1) 사용자가 DAG 워크플로를 작성하면, 스케줄러는 DAG 파일을 분석하고 각 DAG 태스크, 의존성 및 예약 주기를 확인합니다.

 2) 스케줄러는 마지막 DAG까지 내용을 확인한 후 DAG의 예약 주기가 경과 했는지 확인합니다. 예약 주기가 현재 시간 이전이라면 실행되도록 예약 합니다.

 3) 예약된 각 태스크에 대해 스케줄러는 해당 태스크의 의존성(= 업스트림 태스크)을 확인합니다. 의존성 태스크가 완료되지 않았다면 실행 대기열에 추가합니다.

 4) 스케줄러는 1단계로 다시 돌아간 후 새로운 루프를 잠시동안 대기합니다.

 

2.3 Airflow 장점

 - 파이썬 코드를 이용하여 파이프라인을 구현하므로 파이썬 언어에서 구현할 수 있는 대부분의 방법을 사용하여 복잡한 커스텀 파이프라인을 만들수 있습니다.

 - 쉽게 확장이 가능하고 다양한 시스템과 통합이 가능합니다.( 다양한 유형의 DB, Cloud Service 등)

 - 스케줄링 기능으로 DAG에 정의된 특정 시점에 트리거할 수 있을 뿐만 아니라 최종 시점과 예상되는 다음 스케줄 주기를 상세하게 알려줍니다.

 - 백필 기능을 사용하면 과거 데이터를 손쉽게 재처리할 수 있습니다.

 

2.4 Airflow 단점

 - 파이썬을 다룰줄 모르면 DAG구성에 어려움이 있습니다.

 - 추가 및 삭제 태스크가 빈번한 동적 파이프라인의 경우에는 적합하지 않을 수 있습니다. Airflow는 동적 태스크를 구현할 수 있지만, 웹 인터페이스는 DAG의 가장 최근 실행 버전에 대한 정의만 표현해 줍니다.

 - 파이썬 코드로 DAG를 작성하는 것은 파이프라인 규모가 커지면 굉장히 복잡해 질 수 있습니다.