Airflow 운영
1. dag 폴더 및 스캔 주기 수정
- airflow.cfg 폴더의 dags_folder 수정 필요
- dag_dir_list_interval : dags_folder를 스캔하는 주기 설정 (초단위)
2. Airflow Database 업그레이드
- Core 섹션의 sql_alchemy_conn : Sqlite가 아닌 Postgres나 MySQL로 변경
- 해당 DB는 주기적으로 백업되어야 함 → (8번에서 자세히)
3. Executor 변경
- 기본은 SequentialExecutor
- Single Server 일 경우 : LocalExecutor나 CeleryExecutor
- Cluster 일 경우 : CeleryExecutor나 KubernetesExecutor
4. Authentication 활성화 혹은 비밀번호 강화
- Airflow 2.0에서는 인증 자동화 On
- 되도록 VPN뒤에 위치하도록 할 것
5. Logs 폴더와 로컬 데이터 저장 위치 조정
- Logs: 아래 두 폴더에 저장되는데, 조정 필요하면 하기
- base_log_folder = /dev/airflow/logs
- child_process_log_directory = /dev/airflow/logs/schedular
- docker-compose 를 이용하는 경우, 다수의 서버가 접근할 수 있기 때문에 host volume이나 named 볼륨으로 셋팅한다.
- volumes: - ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags - ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs
6. 주기적으로 Log data 정리
- 관리하는 데이터가 큰 경우 Logs 많이 쌓임 → 누적되어 꽉차면 동작 안 함 ⇒ 관리 필요
7. Scale Up 후 Scale Out 방향으로 진행
- Cloud Airflow(Cloud Composer or MWAA) 사용 혹은 Docker/K8s를 이용하여 직접 구축
- Docker/K8s 의 경우 확장성이 좋지만, 숙련된 지식과 스킬 요함
8. Airflow 메타데이터 데이터베이스 백업
- variables와 connections 같이 백업 (variables.json, connections.json으로 export하여 백업)
- 초기 설정에 DB를 암호화해주는 Fernet key 가 있는데, 암호화하는 경우 key 도 같이 백업한다.
- 가장 좋은 건 메타데이터 디비를 외부(AWS RDS)에 위치시키는게 Best임. 거기에 주기적인 백업
- 혹은 DAG를 이용하여 메타데이터DB나 logs 파일 내용을 클라우드(S3)에 저장하도록 할 수 있음.
- 하지만 이는 DAG가 동작하지 않으면 저장도 안된다는 디펜던시가 있음 (치명적,,)
9. health-check하는 모니터링 추가하기
- API 먼저 활성화하고 Health Check Endpoint API를 모니터링 툴과 연동
- 체크 대상 : 웹서버, 스케줄러, 메타데이터 디비
- 규모가 된다면 DataDog, Grafana 등을 사용함 (DevOps팀과 협업)
Airflow 대안
- Prefect (Open Source)
- Airflow와 비슷하며 경량화됨.
- Dagster (Open Source)
- 무거움. 데이터 파이프라인과 데이터 동시 관리
- Airbyte (Open Source)
- Low-Code 툴에 가까움
- SaaS 형태의 데이터 통합 툴들
- FiveTran
- Stitch Data
- Segment
'#️⃣ Data Engineering > Airflow' 카테고리의 다른 글
Ch2,3. Airflow DAG 구조 및 스케줄링 (0) | 2023.11.15 |
---|---|
Ch1. Airflow 살펴보기 (0) | 2023.11.14 |
Airflow 실습_OLTP에서 OLAP으로 데이터 적재하기 (0) | 2023.06.09 |
Airflow Backfill_Execution Date과 StartDate (0) | 2023.06.08 |
Airflow 실습_OpenAPI와 Upsert를 이용한 DAG (0) | 2023.06.08 |