Airflow는 워크플로우를 구축하고 실행할 수 있는 플랫폼
워크플로우는 DAG로 표시되며 work라는 개별 task라는 조각을 포함하며 데이터의 흐름을 고려하여 정렬됨

-DAG는 작업 간의 종속성과 실행 및 재시도 실해 순서 지정함
Scheduler
스케줄러는 Airflow 워크플로우의 실행 일정 관리
정의된 DAG(Directed Acyclic Graph)를 기반으로 작업들의 실행 시간을 결정하고 실행
스케줄러는 사용자가 정의한 실행 주기, 의존성 등을 고려하여 작업을 조율하고 실행할 시간을 계산
Metadata Database
워크플로우 실행 및 관리에 필요한 정보를 저장하고 추적하는 데 사용
메타데이터베이스는 여러 유형의 데이터베이스를 사용할 수 있으며, 기본적으로 SQLite, PostgreSQL, MySQL 등을 지원함
Airflow 내부에서 워크플로우(DAG)의 정의, 실행 상태, 실행 이력, 작업 상태, 작업 인스턴스 실행 결과 등 다양한 메타데이터를 보관
Worker
워커는 실제로 작업(Task)들을 실행하는 컴퓨팅 리소스
각 작업은 독립된 컨테이너, 프로세스 또는 스레드에서 실행
워커는 스케줄러로부터 할당받은 작업을 수행하며, 작업의 실행 결과와 상태를 메타데이터베이스에 업데이트
Executor
익스큐터는 워커가 작업을 어떻게 실행할지를 정의
Airflow는 여러 익스큐터를 지원하며, SequentialExecutor(단일 스레드로 실행), LocalExecutor(로컬 프로세스에서 병렬 실행), CeleryExecutor(분산 작업 실행) 등이 있음
Web Interface
웹 인터페이스는 사용자가 Airflow 워크플로우를 모니터링하고 관리할 수 있는 웹 기반의 대시보드
웹 인터페이스를 통해 DAG 정의, 실행 이력, 로그, 스케줄 등을 확인하고 다양한 작업을 수행
Message Broker
메시지 브로커는 분산된 작업자 간에 작업 메시지를 교환하는 데 사용
작업자는 메시지 브로커를 통해 작업 실행을 요청하고 완료한 후 결과를 리포트
Airflow는 다양한 메시지 브로커를 지원하며, 주로 Celery나 RabbitMQ가 사용
DAGs (Directed Acyclic Graphs)
DAGs는 워크플로우를 정의하는 코드
DAG는 작업들과 작업 간의 의존성을 나타내며, 각 작업은 Python 함수나 오퍼레이터로 정의
DAG를 통해 실행 스케줄, 의존성, 실행 파라미터 등을 설정