Airflow Dag 파싱, 3.x 버전에서 이렇게 최적화하세요!

by DD
1주 전
조회수 50

Airflow Dag 파싱은 Dag 객체 생성 및 메타DB 저장을 위한 핵심 과정이며, 파싱 속도 저하는 트리거 지연, CPU/메모리 폭증을 유발함

Top-level DB/API/파일 I/O 금지, .airflowignore 설정, dag-processor standalone 서비스 사용 등 최적화 권고 사항 제시

3.x 버전 변경 사항 (dag-processor standalone, 설정 섹션 이동, .airflowignore 문법 변경)에 대한 이해 필요

메트릭 측정을 통해 파싱 시간(total_parse_time)을 확인하고, parsing_processes, min_file_process_interval, parsing_pre_import_modules 설정을 튜닝

Airflow Dag 파싱 과정의 이해

Airflow에서 Dag 파싱은 dag-processor(3.x)가 Dag 폴더의 .py 파일을 import하여 Dag 객체를 생성하고, 직렬화하여 메타DB에 저장하는 과정이다. 이 과정은 min_file_process_interval(기본 30초)마다 반복되며, 파싱 속도가 느리면 트리거 지연, 스케줄러 heartbeat 지연, CPU/메모리 폭증을 유발한다. 따라서, Dag 파싱 시간(dag_processing.total_parse_time)을 측정하고, 병목 지점을 파악하는 것이 중요하다. 파싱 시간 단축을 위해 코드 레벨, 인프라 레벨, 설정 튜닝을 진행해야 한다.

Airflow 3.x 주요 변경 사항 분석

Airflow 3.x로의 마이그레이션 시, dag-processor standalone 서비스 도입, 설정 섹션 이동, .airflowignore 문법 변경 등 주요 변경 사항에 대한 이해가 필수적이다.

dag-processor: 2.3 버전에서 optional이었지만, 3.0부터 mandatory로 변경되어 scheduler 내부에서 동작하지 않음

설정 섹션 이동: 파싱 관련 설정이 [scheduler]에서 [dag_processor]로 이동하여, 이전 섹션에 설정 시 무시될 수 있음

.airflowignore 문법 변경: 2.x의 regex에서 3.x의 glob으로 변경되어, 기존 regex 패턴이 glob으로 해석될 경우 매칭되지 않는 문제 발생

이러한 변경 사항들을 인지하고, 적절한 설정을 적용해야 한다.

인프라 설정 튜닝: parsing_processes, min_file_process_interval

Airflow Dag 파싱 성능 개선을 위해 인프라 설정을 튜닝하는 것이 중요하다. 특히, parsing_processes, min_file_process_interval, file_parsing_sort_mode 설정을 조정하여 파싱 속도를 향상시킬 수 있다.

parsing_processes: 병렬 파서 수를 조정하여 CPU 코어, 평균 파일 파싱 시간, 메모리 마진을 고려하여 설정

min_file_process_interval: cycle 시간보다 짧게 설정하면 무의미하므로, cycle 시간을 고려하여 설정

file_parsing_sort_mode: modified_time을 사용하여 최근 변경된 파일부터 파싱하도록 설정

parsing_pre_import_modules 설정을 통해 공통 import 모듈을 pre-load하여 파싱 시간을 단축할 수 있다.

.airflowignore 설정과 코드 레벨 안티패턴

Dag 파싱 최적화를 위해 .airflowignore 설정을 정확히 하고, 코드 레벨 안티패턴을 제거해야 한다. .airflowignore 설정을 통해 불필요한 파일 파싱을 방지하고, 코드 위생을 유지하여 파싱 시간을 단축할 수 있다.

.airflowignore: 3.x 버전에서 glob 문법을 사용하므로, 정확한 패턴으로 설정해야 함

코드 레벨 안티패턴: top-level Variable.get, Connection.get, DB 클라이언트 인스턴스화, 동적 Dag 생성 등을 지양하고, pre-commit을 활용하여 코드 품질을 관리

이러한 노력들을 통해 Dag 파싱 성능을 개선하고, Airflow 시스템의 안정성을 높일 수 있다.

Apache Airflow 3.x Dag Parsing 최적화 체크리스트

댓글 0

첫 번째 댓글을 남겨보세요!