강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

Joe (브리쳐스)님의 프로필 이미지
Joe (브리쳐스)

작성한 질문수

Airflow 마스터 클래스

스케쥴러 - DAG 파싱 부하 줄이는 과정 질문

작성

·

12

0

 

안녕하세요 김현진 선생님

강의 잘 듣고 있습니다.

 

아래의 퀴즈를 풀다가 궁금한 점이 생겨서 질문을 남깁니다.

 

스케줄러의 DAG 파일 파싱 부하를 줄이기 위해 권장되는 코드 작성 방법은 무엇일까요?

--> 라이브러리 import 문을 Python callable 함수 내부로 옮긴다.

 

스크린샷 2025-10-11 오후 10.22.02.png

 

위 설명을 이해하기 위해서 상황을 가정해보았는데요,

python callable 함수 외부에 선언된 API 호출문이 있는 경우를 피해야하고, 만약 그렇게 되면

스케쥴러가 DAG을 파싱할 때마다 실행되는 상황이 되는 것이 맞을까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. Joe (브리쳐스)님.

스케줄러의 DAG 파싱 시 발생하는 부하를 줄이기 위한 코딩 관행에 대해 좋은 질문을 주셨습니다. 강의의 퀴즈에서도 언급된 대로, DAG 파일의 파싱 부하를 줄이는 가장 권장되는 방법 중 하나는 라이브러리의 import 문을 Python callable 함수 내부로 옮기는 것입니다.

이유는 다음과 같습니다:

  1. 파서의 부담 감소: Airflow 스케줄러는 기본적으로 DAG을 주기적으로 파싱하여 변화가 있는를 탐지합니다. 라이브러리 import 문이 DAG 정의 바깥에 있으면, 스케줄러가 DAG을 파싱하는 매 순간 해당 import 문을 실행하게 됩니다. 이는 불필요한 리소스를 사용하게 만들어, 성능에 영향을 미칠 수 있습니다.

  2. 필요한 시점에 최소의 작업 수행: import 문이 callable 내부에 위치하면 해당 라이브러리는 실제 함수가 실행될 때만 import 되므로, 불필요한 리소스 소비를 줄이고 필요한 작업을 필요한 순간에만 수행하게 됩니다.

  3. DAG 파일의 가벼움 유지: DAG 파일은 워크플로우를 정의하는 데 집중하고, 무거운 작업이나 부하가 될 수 있는 작업은 최대한 피하는 것이 좋습니다.

상황 가정에 대한 이해

질문에서 제시한 상황, 즉 “python callable 함수 외부에 선언된 API 호출문이 있는 경우”를 피해야 한다는 내용은 맞습니다. 만약 API 호출이나 무거운 연산이 외부에 위치하면, 스케줄러가 DAG을 파싱할 때마다 이러한 호출이 반복됩니다. 이는 Https 요청, DB 연결 같은 시간이나 리소스가 소모되는 작업에 특히 부담을 주게 됩니다.

관련 질문 링크

이 방법을 사용하여 스케줄러의 부하를 효과적으로 관리하고 최적화 된 워크플로우를 작성하길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Joe (브리쳐스)님의 프로필 이미지
Joe (브리쳐스)

작성한 질문수

질문하기