에어비앤비에서 개발한 워크플로우 스케줄링, 모니터링 플랫폼
실제 데이터의 처리가 이루어지는 곳은 아님
많은 회사에서 느끼는 공통적인 문제점
- 워크플로우 관리문제
이전에는 cron script 등으로 워크플로우를 관리
이러한 기존 방식은 몇가지 문제가 있음
- 실패복구 : 언제 어떻게 다시 프로세스를 다시 실행할것인가?
- 모니터링 : 잘 돌아가고 있는지 힘들다.
- 의존성 관리 : 데이터 파이프라인간 의존성이 있는 경우 상위 데이터 파이프라인이 잘 돌아가고있는지 파악이 힘들다.
- 확장성 : 중앙화 해서 관리하는 툴이 없기 때문에 분산된 환경에서 파이프라인들을 관리하기 힘들다.
- 배포 : 새로운 워크플로우를 배포하기 힘들다.
airflow를 쓰는 이유
데이터 파이프라인이 수십개가 있다면 관리하기가 굉장히 어렵고 어떤 부분에서 실패한지 알기가 힘들다.
airflow 는 워크플로우를 작성하고 스케줄링하고 모니터링 하는 작업을 프로그래밍 할 수 있게 해주는 플랫폼
- 파이썬으로 쉬운 프로그래밍이 가능
- 분산된 환경에서 확장성이 있음
- 웹 대시보드(UI)
- 커스터마이징이 가능
워크플로우?
의존성으로 연결된 작업(task)들의 집합
Airflow 컴포넌트 종류
- 웹서버 : 웹 대시보드 UI
- 스케줄러 : 워크플로우가 언제 실행되는지 관리
- Metastore : 메타데이터 관리
- Excecutor : 테스크가 어떻게 실행되는지 정의
- Worker : 테스크를 실행하는 프로세스
DAG(Directed Acyclic Graph)
방향성이 있는 순환하지 않는 그래프
A -> B -> C : DAG O
A -> B -> C -> A : DAG X
Operator
작업(Task)를 정의하는데 사용
Action Operators - 실제 연산을 수행
Transfer Operators - 데이터를 옮김
Sensor Operators - 테스크를 언제 실행시킬 트리거를 기다림(예를 들어 어떤 디렉토리에 파일이 도달하면 작업을 시작하는 등)
작업(task)
Operator 를 실행시키면 Task가 된다.
Task = Operator Instance
airflow 유용성
여러 데이터 엔지니어링 환경에서 유용하게 쓰일 수 있다.
- 데이터 웨어하우스
- 머신러닝
- 분석
- 실험, A/B 테스트
- 데이터 인프라 관리