Apache AirFlow란?
AirFlow란 Airbnb에서 만든 workflow* managemen tool이다. 말 그대로 일련의 작업 흐름을 관리하는 툴이라 생각하면 된다. 여기서 관리라는 것은 의존성 있는 작업 흐름에 대해 일련의 Task를 작성, 스케줄링, 모니터링 하는 오픈 소스 플랫폼이다.
* 작업 흐름 (workflow)란, 의존성으로 연결된 작업(Task)들의 집합. 예를 들어, 데이터 ETL의 경우 추출 (Extract) → 변환/가공 (Transform) → 적재 (Load)의 작업의 흐름.
AIrFlow는 사용자의 작업을 정확한 시간에, 정확한 방법으로, 정확한 순서대로 실행하게 해주는 오케스트레이터이다.
다음은 AirFlow에서 이용하는 주요 컴포넌트 구조에대해 간략하게 설명하겠다.
- Scheduler : DAG를 분석하고 현재 시점에서 DAG의 스케줄이 지난 경우 AirFlow worker에 DAG Task를 예약함
- Webserver : 웹 대시보드 UI로 scheduler에서 분석한 DAG를 시각화하고 DAG 실행과 결과를 확인할 수 있는 인터페이스를 제공
- Worker : 예약한 Task를 실제로 실행시키는 것
- Metastore : AirFlow에있는 DAG, Task등의 메타데이터 관리
- Executor : Task가 어떻게 실행되는지 정의 (사용자 정의)
- DAG 폴더 (또는 Directory) : AirFlow에서 실행할 작업들을 파이프라인 형태로 저장
컴포넌트 구조와 같이 AirFlow는 workflow를 정의하고 실행 가능한 플랫폼으로, 반복 된 작업을 자동화하기 위해 사용한다. Event Driven Architecture로서 각 작업들은 DAG (Directed Acyclic Graph)를 통해 구조화 된다. DAG에 연결된 화살표 방향 순서대로 작업을 실행하고, 분기 실행과 별령 실행이 가능하다. 아래 그림과 같이 DAG는 순환 실행은 불가능하다.
AirFlow는 복잡한 작업을 쉽게 구성 할 수 있고, 각 Task 별로 연결할 수 있어 전체 파이프라인 구성에 적합하고 반복 작업을 실행하는 기능에 초점이 맞춰져 있다.


댓글
댓글 쓰기