Udemy - Apache Airflow: The Hands-On Guide 강의를 요약한 내용입니다.

Web server ➡️ MetaDBScheduler ➡️ MetaDB & ExecutorExecutor ➡️ MetaDBScheduler와Web server, Executor는 MetaDB를 통해 서로 접근이 가능Queue (redis나 rabbitMQ): executor의 외부에 존재하고, 여러 Worker에 Task들을 분배하기 위해 사용Worker : Task가 실제로 실행되는 NodeExecutor : Task들을 외부의 Queue로 전달Queue로 전달된 후, Worker가 Queue에 있는 Task들을 가져감
1. Dag 폴더에 Dag 추가
2. Web server와 Scheduler가 추가된 Dag 정보를 Parsing
3. Scheduler는 추가된 dag가 실행되어야하는지 확인
4. 실행되어야 한다면 DagRun object 생성

5. DagRun object는 running 상태로 MetaDB에 저장
6. Dag 내에 실행 준비가 된 task가 있다면, scheduled 상태로 TaskInstance object 생성

7. Schduler가 TaskInstance를 queued 상태로 Executor에 전달

8. Executor가 task를 실행할 준비가 되면, TaskInstance 상태를 running으로 변경
9. Executor가 MetaDB에 TaskInstance 상태를 running으로 업데이트

10. Task가 종료되면, Executor가 MetaDB에 TaskInstance 상태를 채completed으로 업데이트

11. Scheduler는 실행할 Task가 더 있는지 확인 후, DagRun object를 completed로 업데이트

12. Web server가 UI에 Dag 상태 업데이트