[Airflow] Apache 에어플로우 아키텍처

Airflow 란?

파이썬으로 작성된 데이터 파이프라인(ETL) 프레임워크

Airbnb에서 시작한 아파치 오픈소스 프로젝트

가장 많이 사용되는 데이터 파이프라인 관리/작성 프레임워크

데이터 파이프라인 스케쥴링 지원

웹 UI 제공

데이터 파이프라인 작성을 쉽게 해줌(데이터 소스와 데이터 웨어하우스를 쉽게 통합해주는 모듈 제공-operator)

데이터 파이프라인 관리 관련 다양한 기능 제공 특히 Backfill

Airflow에서는 데이터 파이프라인을 DAG(Directed Acyclic Graph)라고 부름

- 하나의 DAG는 하나 이상의 태스크로 구성

Airflow 2.10.4이 2024년 12월에 릴리스(최신 버전)

https://airflow.apache.org/docs/apache-airflow/stable/release_notes.html

 

Release Notes — Airflow Documentation

 

airflow.apache.org

 

Airflow 버전 선택 방법 - 구글 Cloud에서 제공하는 Airflow  서비스https://cloud.google.com/composer/docs/concepts/versioning/composer-versions

 

Cloud Composer version list  |  Google Cloud

This page lists the released versions of Cloud Composer images, their support dates, and Python packages installed in each released image.

cloud.google.com

 

Airflow 컴포넌트 구성

Airflow는 총 5개의 컴포넌트로 구성

1. 웹 서버(Web Server)

- 파이썬 flask로 구현

- 스케줄러와 DAG의 실행 상황을 시각화

- connection, valuables, 사용자 지정 등 기능 제공

2. 스케줄러(Scheduler) 

- DAG들을 워커들에게 배정하는 역할을 수행

- DAG는 Task들의 집합

- 실행 순서, 의존 관계에 따라 트리거

3. 워커(Worker)

- 실제 DAG를 실행(태스크)

4. 메타 데이터 데이터베이스

 - 스케줄러와 각 DAG의 실행결과를 별도 DB에 저장

 - sqlite가 기본으로 설치(싱글스레드, 파일 기반), 보통 별도로 프로덕션 DB(MySQL이나 Postgres) 설치해서 사용

5. 큐 (다수서버 구성인 경우에만 사용됨)

 - 이 경우 Executor가 달라짐

 

Airflow 동작 방식

Airflow 구조가 서버 한대로 이루어진 경우,

 

이때, Worker의 수는 서버가 가지고 있는 CPU의 수만큼 최대로 동작 가능

스케일링 할때는 Worker만 모아둔 별도의 서버 구성

 

Airflow 구조가 다수의 서버로 이루어진 경우,

어떤 Executor을 사용하느냐에 따라 Queue 사용 유무가 달라진다.

 

 

Airflow 스케일링 방법

- 스케일 업(더 좋은 사양의 서버 사용)

- 스케일 아웃(서버 추가) : 이 경우에는 클라우드 서비스 권장

 

 

🔜 이어지는 다음 글 보기 [ETL] Airflow DAG

 

[ETL] Airflow DAG란

DAG란?Airflow에서 ETL을 부르는 명칭으로 Directed Acyclic Graph 의 줄임말DAG는 태스크로 구성됨- 만약 3개의 태스크로 구성된다면 Extract, Transform, Load로 구성- Task 단위로 순서 지정 Task란?Airflow의 오퍼레

ourjune.tistory.com