GCP 의 composer나 aws 의 MWAA를 활용하고 bigquery나 glue operator를 활용하여 써본 경험은 가지고 있지만 정작 airflow를 할 줄 아냐고 물어본다면 나는 그거는 아니라고 대답해야한다고 생각하기 때문에 기초부터 다시 공부하고자한다. 추후 토이에서도 사용하기도 해야하고 빠르게 진행하자.
아키텍쳐에서 크게 중요한 것은 없지만 Airflow Scheduler가 worker들에게 작업을 분배할 때 queue(celery)를 활용하며 일반적으로 redis 나 rabbitmq를 해당 queue로 활용한다는 사실은 잊으면 안된다.
DAG를 트리거하며 worker들에게 task를 제출하는역할을 하며 1분에 한번 DAG Dir에서 조건에 맞는 task를 executor로 넘겨준다
작업의 저의, 상태, 실행 정보, 결과정보, 로그, audit등을 바라보며 webserver 모두 metadata database를 바라본다
mysql> show tables;
+--------------------------------+
| Tables_in_airflow_db |
+--------------------------------+
| ab_permission |
| ab_permission_view |
| ab_permission_view_role |
| ab_register_user |
| ab_role |
| ab_user |
| ab_user_role |
| ab_view_menu |
| alembic_version |
| callback_request |
| connection |
| dag |
| dag_code |
| dag_owner_attributes |
| dag_pickle |
| dag_run |
| dag_run_note |
| dag_schedule_dataset_reference |
| dag_tag |
| dag_warning |
| dagrun_dataset_event |
| dataset |
| dataset_dag_run_queue |
| dataset_event |
| import_error |
| job |
| log |
| log_template |
| rendered_task_instance_fields |
| serialized_dag |
| session |
| sla_miss |
| slot_pool |
| task_fail |
| task_instance |
| task_instance_note |
| task_map |
| task_outlet_dataset_reference |
| task_reschedule |
| trigger |
| variable |
| xcom |
+--------------------------------+