Apache Airflow 왜 필요한가?

BAO.DE·2023년 1월 26일

Apache Airflow

목록 보기
1/20

현재 사내에서는 IBM Datastage tool base의 ETL을 이용하고 있다..
많은 대기업 및 IT 기업들이 Airflow를 이용한 파이프 라인을 구축하고 있기에 ,
뒤쳐지지 않기 위해 이참에 배워보고자 한다

당위성

Airflow를 필요로 하는가? 난 공부에 앞서 이 사실이 가장 궁금했다.
구글링과 블로깅, 책 등을 통해 다음과 같은 키워드들을 정리 할 수 있었다.

이름회사워크플로 정의개발언어스케줄관리백필사용자 인터페이스플랫폼 설치수평확장
AirflowAirbnb파이썬파이썬YESYESYESAnywhereYES

위 표를 토대로 정리해보면 다음과 같다
Airbnb에서 만든 파이썬을 이용한 워크플로 관리 도구

미래의 석유라고 불리우는 데이터를 보다 체계적이고 안전하게 저장하기 위한 데이터 파이프라인이 필요로 하고 유연한 파이썬 프레임워크를 사용해 보다 쉽게 데이터 파이프라인을 구축 할 수 있는게 그 이유다.
batch-oriented (배치 지향) 데이터 파이프라인을 구현하는데 적합하다

요약하자면

  • 파이썬 코드를 이용한 복잡한 파이프라인 구성 및 확장
  • 많은 스케쥴링 기법을 통한 정기적 실행
  • 백필 기능을 통한 재처리
  • 모니터링 뷰 제공 등이다.

IBM datastage 와 마찬가지로 Airflow는 선행 , 후행 관계가 존재한다
여기서 task = job(IBM) 을 의미한다.
별도의 단일 task들이 존재를 하고 이것들이 순서에 맞게 수행을 하는것 즉 선행,후행 관계가 존재하고 의존성이 존재하는 것이다.
이것을 자료구조와 마찬가지로 방향이 존재하는 방향성 그래프 (directed graph)
방향성 비순환 그래프 (Directed Acyclic Graph , DAG) 로 나뉜다.
즉, 끝점을 포함하지만 순환을 허용하지 않는 구조인것이다.

이 비순환 그래프의 속성을 통해 Deadlock(교착상태) 를 방지 할 수 있는것이다.
즉 위 그림에서는 2번 Task가 완료되어야지만 5번 Task를 실행할 수 있다.

DAG 실행 순서는 다음과 같다.
1. 그래프안의 모든 Task는 개방된 상태여야 한다.
2. 각 Task의 화살(의존성)은 다음 Task로 이동 전 이전 Task가 완료되었는지 확인
3. Enqueue Task
4. 모든 그래프를 순환할때 까지 반복

0개의 댓글