[Airflow] Airflow의 개념과 구성, 장단점

1. Airflow란
Airflow
는 파이썬으로 작성된 데이터 파이프라인 (ETL) 프레임워크이다.
- 데이터 파이프라인 스케줄링을 지원한다.
- 데이터 파이프라인(ETL)의 작성을 쉽게 만들어 준다. 다양한 데이터 소스와 데이터 웨어하우스를 쉽게 통합해 주는 모듈을 제공한다.
- 데이터 파이프라인을 DAG(Directed Acyclic Graph)라고 부르며 DAG는 하나 이상의 태스크로 구성된다.

- Airflow 버전을 선택하는 방법은 가장 최근 버전을 사용하는 것이 좋다. Google Cloud
2. Airflow 구성

- 웹 서버(Web Server)
Python Flask
로 구현
스케줄러
와 DAG
의 실행 상황을 시각화
- 스케줄러 (Scheduler)
- 워커 (Worker)
- 메타 데이터 데이터베이스
- default가
sqlite
지만 보통 별도로 MySQL
이나 PostgreSQL
등을 따로 설치해 사용
- 큐
- 다수의 서버로 구성하는 경우 워커가 한 개의 서버로 제약이 생기기 때문에 서버의 수를 늘리게 되고 데이터 파이프라인에 어떤 태스크가 어떤 워커로 실행될 것인지를 미리 정할 수 없기 때문에 이것을 큐에 넣어 두어 판단
- Executor가 달라짐
✍ Airflow 스케일링 방법

- 스케일 업
- 더 좋은 사양의 서버 사용
- 대신 어느 정도 지나면 한계에 달할 수 있음
- 스케일 아웃
- 다 다르겠지만 스케일 아웃을 하면 비용이 많이 들고, 관리도 더 힘들어지기 때문에 일단 스케일 업을 진행한다. 계속 스케일 업을 진행하다 한계에 달하게 되면 스케일 아웃을 하게 되는데 서버를 추가하는 게 아니라 Airflow를 제공하는 클라우드 서비스를 통한 스케일 아웃을 한다.
✍ 여러 종류의 Executor들
Executor
란 스케줄러가 워커에게 바로 데이터를 전달하는 게 아니라 Executor
를 통해 전달하게 된다.
- default는
Sequential Executor
지만 제약이 많다.
- 종류
- Sequential Executor
- Local Executor
- Celery Executor
- Kubernetes Executor
- CeleryKubernetes Executor
- Dask Executor
3. Airflow의 장단점
1) 장점
- 데이터 파이프라인을 세밀하게 제어 가능
- 다양한 데이터 소스와 데이터 웨어하우스를 지원
- 백필(Backfill)이 쉬움 (매우 중요한 Airflow의 장점)
2) 단점
- 배우기가 쉽지 않음
- 상대적으로 개발 환경을 구성하기가 쉽지 않음
- 직접 운영이 쉽지 않기 때문에 어느 시점이 되어 스케일 아웃이 필요하다면 클라우드 버전 사용이 선호됨
4. DAG(Directed Acyclic Graph)

Airflow
에서는 Data Pipeline, Data Workflow을 DAG(Directed Acyclic Graph)
라고 부른다.
- 순서가 양방향이 아니라 한 방향으로 가기 때문에
Directed
가 붙는다.
- 또한 루프가 존재하지 않고 모든 과정이 끝나면 끝이기 때문에
Acyclic
이라고 한다.
DAG
는 하나 이상의 태스크로 구성이 된다. 즉, 태스크의 집합이다.
- 이때 태스크(Task)란?
Airflow
의 오퍼레이터(Operator)
로 만들어짐
- 경우에 맞게 사용 오퍼레이터를 결정하거나 필요하다면 직접 개발할 수도 있음