Apache Airflow is an open source platform to programmatically author, schedule and monitor workflows
Web Server
Flask와 Gunicorn으로 구성됩니다. 없어도 Task 실행이 가능하지만 UI를 사용할 수는 없습니다.
Schedular
스케줄링 워크플로우를 책임지는 데몬입니다. Airflow의 핵심, 스케줄러가 다운되면 더 이상의 작업을 진행할 수 없습니다. 그래서 일반적으로 Production 환경에는 최소한 2개의 스케줄러가 있습니다.
MetaStore
메타데이터가 저장되는 데이터베이스입니다. 일반적으로 SQL Alchemy와 호환됩니다. Postgres, MySQL, Oracle DB 등이 있습니다.
Triggerer
Deferrable Operators를 관리합니다. 다시 말해, 스스로를 일시 중단하거나, 다시 시작하는 작업을 관리합니다. 특히 다음 이벤트를 기다릴 때 유용합니다.
Executor
어떻게 Task들이 수행되어야하는지 정의하는 클래스입니다. 스케줄러와 함께 내부적으로 정의되어있습니다. Executor는 Task를 수행하지 않습니다. Task의 수행은 Worker가 합니다. 어떤 시스템에서 어떻게 작업을 실행할 지 정의합니다. 예시로는 K8S Executor, Celery Executor, Local Executor가 있습니다.
Worker
Worker는 작업이 실행되는 프로세스나 컴퓨터입니다.

Dag는 방향성이 있지만, 순환하지 않는 그래프입니다.

이렇게 방향성이 없는 그래프는, Dag가 아닙니다.
Airflow에서 모든 데이터파이프라인은 Dag와 동일하다고 볼 수 있습니다.

Airflow에서의 Task는 Operator라고 보면 됩니다. Airflow에서 Task를 생성할 때는 Operator를 사용합니다. 즉 특정 날짜를 가진 Operator는 Task instance와 같습니다.
Action Operators
Bash Operator, Python Operator를 통해서 스크립트나, 파이썬 코드를 실행할 수 있고, 데이터베이스에 Connection 할 수도 있습니다.
Transfer Operators
만약 소스 a에서 소스 b로 데이터를 전송하고 싶다면, Transfer Operator를 사용하면 됩니다.
Sensor Operators
데이터베이스에 입력되길 기다리는 작업이나, 파일이 특정 위치에 도착하길 기다리는 Operator가 필요하다면, 이 Sensor Operator를 활용합니다.
Deferrable Operators
Sensor Operators의 스마트한 버전입니다. 추후에 따로 포스팅하겠습니다.
앞서 말한 Operator를 순서를 만들어서 Dag를 만들면 ,이것이 Workflow고, Workflow는 즉 데이터 파이프라인입니다.

Airflow는 데이터를 처리하는 프레임워크가 아닙니다. 데이터를 전송할 수 있지만, 사이즈가 제한되어있습니다. 또한 실시간 데이터를 처리하는 프레임워크도 아닙니다. 지연시간이 상당하고, 그저 Ochestration tool입니다.