- 웹 서버
- 스케줄러
- 워커
- 메탕 데이터 데이터베이스
- Sqlite가 기본으로 설치 된다.
- 큐 (다수서버 구성인 경우에만 사용됨)
- 이 경우 Executor가 달라진다.
Airflow 구성
- 스케줄러는 DAG들을 워커들에게 배정하는 역할을 수행
- 웹 UI는 스케줄러와 DAG의 실행 상황을 시각화해줌
- 워커는 실제로 DAG를 실행하는 역할을 수행
- 스케줄러와 각 DAG의 실행결과는 별도 DB에 저장된다.
- 기본으로 설치되는 DB는 SQLite
- 실제 프로덕션에서는 MySQL이나 Postgres를 사용해야 한다.
Airflow 스케일링 방법
- 스케일 업 (더 좋은 사양의 서버 사용) -> 관리는 쉽지만 언젠간 한계에 도달
- 스케일 아웃 (서버 추가) -> 관리가 어려워진다.
Executors?
- Sequential Executor
- Local Executor
- CeleryExecutor
- Kubernetes Executor
- CeleryKubernetes Executor
- Dask Executor
Airflow Connections
- 호스트 이름, 포트 번호, 계정 정보 등 다른 시스템과 연결 관련 정보를 저장하는데 사용
- 장점
- 소스 코드내에 이런 민감한 정보를 하드코딩할 필요가 없음
- 관련 정보들을 한 군데서 관리할 수 있기에 편리 (Variables와의 차이점)
- Snowflake 연결 정보의 경우 Variable로 관리하면 3개가 필요
- Connection으로 관리하면 하나에 다 들어감 (뒤에서 셋업)