imhamburger 님의 블로그
에어플로우(Airflow) - 에어플로우 이해하기 본문
아파치 에어플로우(Apache Airflow)는 간단하게 말하자면 데이터 파이프라인을 관리하는 플랫폼이다.
그래서 데이터 파이프라인이 뭔데?
파이프라인을 한국어로 번역하면 배관이다. 배관은 한쪽 방향으로 흘러가는 구조이다. 데이터 파이프라인도 데이터가 차.례.대.로 전달해 나가는 구조이다. 구조 안을 살펴보면, 데이터가 어딘가로부터 들어오면 그것을 필요한 데이터만 추출하여 변환하고, 가공하고, 저장해 전달하는 과정이다.
에어플로우는 이러한 데이터 파이프라인을 관리해주는 것이다.
아니 근데 굳이 쓸 필요가 있을까? 내가 관리하면되지~
라고 생각했다면... 불가능한 것은 아니다. 예전 그리고 지금까지도 그렇게 하는 분들도 많이 계시다.
이런 상황이 있다.
예를들어, 물이 흐르는 배관이 10개가 이어져있는 모습을 상상해보자. 그리고 제일 첫번째부터 마지막 배관까지 이름을 1번, 2번, 3번...10번이라고 이름을 지어줬다.
만약, 7번 배관에 구멍이 났다면?
1번부터 6번까지는 물이 잘 흐르고 있겠지만, 7번, 8번, 9번, 10번 배관은 물을 받을 수가 없다. 배관공은 어디서 잘못되었는지 확인하기 위해 1번부터 10번까지 모.두. 훓어봐야한다. 왜냐하면 7번만 문제가 생겼어도 8번과 9번 그리고 10번에 문제가 안생겼을 가능성이 100%는 아니기 때문이다. 그럼 시간도 오래걸리고 너무 비효율적이다.
근데 배관공이 airflow라는 것을 이용하는 모습을 상상해보자.
airflow는 똑똑해서 7번에 문제가 생겼으면 7번 배관에 빨간불을 표시한다. 그리고 배관공에 알린다. 그럼 배관공은 빨간불에 들어온 배관만 수리하면 그만이다. 그러니 시간을 아낄 수 있고 무엇보다 정확히 어디가 잘못되었는지 알 수 있어 일석이조이다.
airflow는 뿐만 아니라 데이터 파이프라인에서 어느 구간의 이전 날짜 작업이 실패하였을 때 해당 날짜만 재실행하는 등의 문제점을 해결해준다. 게다가 데이터를 불러오는게 내가 매일 수작업으로 명령을 내릴 필요없이 airflow의 스케줄을 설정만 해놓으면 알아서 특정시간 혹은 일자에 작업을 반복하여 수행한다.
airflow에서 나오는 핵심 개념은 3개이다. DAG / Operator / Task
DAG
에어플로우에서 DAG는 핵심이다. DAG(Directed Acyclic Graph)를 번역하자면 비순환 그래프이다. 여러 그래프들을 이어서 비순환 워크플로우를 만든다.
DAG를 쉽게 생각하자면 하나의 데이터 파이프라인이다. 그리고 오퍼레이터는 내가 설계한 기계라고 생각하면 이해하기 쉬울 것 같다.
예를들어, 내가 과자회사를 운영하는 사장이라면 한 공장은 초코과자만, 다른 공장은 딸기과자만 생산하는 공장을 가지고 있다. 그래서 현재 나는 2개의 공장(DAG)을 가지고 있으며, 각각 공장은 과자를 생산하는 기계가 있는데 이를 Operator 라고 부른다.
Operator는 내가 설계하였으며, 여러 개로 엮어져 있다.
오퍼레이터는 DAG 안에 정의되는 Operator 함수인데, Operator 함수가 DAG상에서 정의되서 호출되면 그것이 Task이다.
Airflow도 사용법에 관한 공식문서가 있으니 DAG를 만들 때 참고하자.
아래 사진은 DAG의 워크플로우 예시이다.
'에어플로우(Airflow)' 카테고리의 다른 글
에어플로우(Airflow) - Celery Executor 사용하기 (13주차) (0) | 2024.10.02 |
---|---|
에어플로우(Airflow) - PythonOperator, PythonVirtualenvOperator, BranchPythonOperator 다뤄보기 (0) | 2024.07.31 |