에어플로우를 통해 반복되는 작업들을 일정한 순서를 가지고 원하는 시간에 지속적으로 수행할 수 있다.
구체적인 예시를 들어보자.
우리는 매일 오전 7시에 아래와 같은 data pipeline을 실행하려고 한다.
위의 프로세스를 예시로 설명하자면 아래와 같다.
request API > spark job > MySQL(Database)
물론 위의 작업은 사람이 수작업으로 가능하다.
그러나 아래와 같이 데이터 파이프라인이 많아지면 어떻게 할까?
일일히 위의 파이프라인들을 수작업한다고 하면 아마 모든 데이터 엔지니어들은 일을 그만두지 않을까 싶다.
에어플로우를 사용하면 아래와 같이 다양한 파이프 라인을 쉽게 모니터링이 가능하다.
이러한 점에서 에어플로우를 쓰는 것이 데이터 엔지니어에게는 매우 필수적이라고 생각한다.
data orchestraor
이다.이제 다시 airflow
를 정의해보자.
airflow
는 다양한 툴을 활용하여 원하는 시간에 원하는 데이터를 정해진 순서와 정해진 작업 방식으로 데이터를 다룰 수 있게 해주는 data orchestraor
라고 정의할 수 있다.
airflow
특장점Web Server
flask 서버 기반의 UI 환경이 주어진다.
Scheduler
백그라운드에서 스케쥴링된 workflow를 할당한다.
MetaStore
에어플로우에서 쓰는 메타데이터를 저장하는 데이터 베이스
Executor
에어플로우에서 Task 인스턴스를 실행하는 주체 (이부분은 좀 복잡해서 나중에 따로 다루겠다.)
(celery excutor, kubernetes excuter가 대표적으로 존재)
Worker
Executor
가 정해준 방식으로 task를 할당받아 작업하는 노드 또는 프로세서이다.
방향이 존재하는 비순환 그래프
위의 그래프 형식으로 데이터 파이프라인을 구축
Action operator
: 실제 환경에서 해당 작업을 명령할 내용을 실행시켜 주는 operator
Transfer Operator
: 원본 데이터를 다른 목적지로 이동시켜 주는 오퍼레이터
구체적인 예시로 mysql db에서 gcp bucket으로 옮기는 오퍼레이터.
Sensor Operator
: 시간, 파일, 외부 이벤트를 기다리며 해당 조건을 충족해야만 이후의 작업을 진행할 수 있게 해주는 Airflow의 오퍼레이터
task: 내 데이터 파이프라인의 오퍼레이터
task instance: 내 파이프라인에서 실행되고 있는 오퍼레이터
airflow는 data streaming soltion이 아니다.
airflow는 데이터 처리 프레임워크가 아니다
airflow는 데이터 처리를 위해 많은 메모리를 수용하지 못한다.
airflow를 통해 다른 프레임워크에 작업을 내려 해당 프레임워크 안에서 동작하게 워크 플로우를 작성해야 한다.