-
[Airflow] Why Apache Airflow?개발/Airflow 2022. 7. 6. 23:39
Apache Airflow?
Airflow is a platform to programmatically author, schedule and monitor workflows.
-> airflow는 workflow를 구축 및 실행할 수 있는 플랫폼입니다.Apache Airflow를 왜 사용하는 이유
- Data engineering에서는 ETL(Extract/Transform/Load) 과정을 통해 Data 가공, 적재
- ML에서도 학습 데이터 전처리,Train,Prediction 시 사용
- 위와 같이 Sequential한 로직(Output->Input으로 동작)들을 한번에 관리 할 경우
Apache Airflow 장점
- Python 기반으로 만들어졌기 때문에 접근하기 쉽다.
- Airflow console이 별도로 존재하기 때문에 Task 관리를 서버에서 관리하지 않아도 된다.
- 작업 별 시간이 나오기 때문에 bottlenecks 파악에도 용이
Workflow
모든 Task들의 flow입니다.
이를 위해 airflow는 Task를 관리하는데 Dag라는 개념을 사용합니다.
Dag
Directed Acyclic Graph의 약자로 Airflow에선 workflow
- Task의 집합체
무슨 말인지 감이 안잡히실텐데요.
Airflow에서 지원해주는 Dag라는 그림을 한번 보면 이해가 됩니다.
아래와 같이 각각의 Task들을 한눈에 알아보기 쉽게 정리되어서 볼 수 있습니다.
그림을 살펴보면 event-driven architecture(EDA) Architecture를 나타내고 있습니다. ingest task가 실행 -> 끝나면 analyze가 실행 -> check_integrity가 실행 -> 분기가 발생 -> 에러 여부에 따라 분기 -> 다음 task가 실행 -> report 실행
위와 같이 하나의 Work에 대해서 알기 쉽게 볼 수 있으며, 시간 대별로 제대로 실행이 되었는지를 한눈에 관리가 가능하죠
전 직장에서는 회사 규모가 큰 중견기업임에도 불구하고 데이터 관련 일은 DB자체의 batch file로만 등록하여 사용하여 많아진 서비스에 대해 관리가 되지 않았습니다. 어떤 흐름을 가지고 있는지 어떤 부분이 중간에 에러가 나서 동작하지 않는지.. 등을 알 수가 없었습니다. 어떤 서비스는 Flow 조차도 남아있는게 없었습니다. 결국 다른 회사에서 이 서비스 안되는 거 같아요와 같은 요청 받을 때가 많았습니다. ( 물론 총 4명의 팀원에서 3명이 한꺼번에 나가고 그 업무를 제가 다 맡아서 모든 일을 다 파악하기에는 역부족이었던 것도 있습니다. )
각 Task 별로 위와 같이 단계를 보여주면서, 어느 부분이 잘못 된지 한번에 파악이 되었다면 관리하기가 수월하였을 겁니다.
Airflow Architecture
- Airflow Webserver - 웹 UI를 표현하고, workflow 상태 표시하고 실행, 재시작, 수동 조작, 로그 확인 등 가능
- Airflow Scheduler
- 작업 기준이 충족되는지 여부를 확인
- 종속 작업이 성공적으로 완료되었고, 예약 간격이 주어지면 실행할 수 있는 작업인지, 실행 조건이 충족되는지 등
- 위 충족 여부가 DB에 기록되면, task들이 worker에게 선택되서 작업을 실행함
'개발 > Airflow' 카테고리의 다른 글
[Airflow&Python] - 4. Template variable(ts/ds/.. ) & datetime & KST 변경 (0) 2022.07.08 [Airflow] - 3. Dags(Python operator) (0) 2022.07.08 [Airflow] 2. Vscode로 Dags 관리 (0) 2022.07.03 [Airflow] - 1. Airflow 설치 (0) 2022.07.03 [Airflow] - Error : driver failed programming external connectivity on endpoint webserver (0) 2022.06.27