(1) Apache Airflow Architecture
(1) Apache Airflow Architecture
Apache Airflow
Airflow는 복잡한 data workflow을 orchestrate하기 위해 설계된 open source platform이다. DAG(Directed Acyclic Graphs)를 사용하여 일련의 task와 그들간의 dependencies를 정의한다. 다양한 component로 구성되어있으면 차례대로 살펴보자 
Components
Web Server
- 모니터링, dag, variables, connection을 관리하며 log를 체크할 수 있는 Airflow UI
- data workflow를 시각화시키고, progress를 check하며 어떤 issue를 트러블슈팅 하게 함

Scheduler
Executor
- 주요 role은 task를 수행시키는것
scheduleer와 상화작용하여 task의 상세정보를 얻고 task 수행에 필요한 process 또는 container를 시작시킴- Airflow는 다양한 Executor Type을 제공. 각각은 특정 인프라 설정 및 운영요구사항에 맞게 조정
Worker
- Executor에의해 할당된 task가 수행되는 역할 구성
- 선택된 Executor에 의해, process나 container를 분리시킬 수 있음
- Worker는 실제 code나 script를 수행 역할을 담당하고, 그들의
status를 Executor에 레포팅
Metadata Database
- Airflow의 설정한 task의 상세정보 그리고 과거에 어떻게 수행되었느지를 포함한 모든
workflow를 추적 scheduled task과 관련된 모든것들은 저장하고 구성- 작업의 모든 진행 상황을 살펴보고 발생할 수 있는 문제를 해결하는데 도움
- PostgreSQL, MySQL, SQLite등 다양한 db를 유연성을 제공

Message Broker
- CeleryExecutor가 작업 배포에 사용되는 설정에서 message broker는 매우 중요한 역할을함
RabbitMQ또는Redis와 마찬가지로scheduler와worker사이의 중개자역할을 함scheduler에서worker로 작업 세부 정보를 전달하여 원활한 통신을 보장하고, 작업이 분산 시스템 전반에서 안정적이고 효율적으로 실행 되도록 보장
Airflow 기본동작 원리
- usr가 새로운 dag을 생성 -> dags folder안에 py 파일배치
- web server와 scheduler가 파싱하여 읽어옴
scheduler가metastore를 통해DagRun오브젝터를 생성
DagRun은 사용자가 작성한 Dag의 instance
scheduler는 Task Instnace Object를 스케쥴링함- 트리거가 상황이 맞으면
scheduler가 task instance를 executor로 보냄 - executor는 task instaance를 실행시킴
- 완료 후
metastore에 완료되었다고 보고- 완료된 Task instance는 Dag Run에 업데이트
scheduler는 Dag이 실행이 완료되었는지metastore를 통해Dag Run상태를 완료로 바꿈
metastore가webserver에 업데이트하여 사용자도 확인
참고
- https://github.com/mjs1995/muse-data-engineer/blob/main/workflow/airflow/airflow_architecture.md
- https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/overview.html#airflow-components
- https://medium.com/apache-airflow/airflow-architecture-simplified-3d582fc3ccb0
- https://tommypagy.tistory.com/669
This post is licensed under CC BY 4.0 by the author.

