AI 시스템 구축: 도구 – Airflow

ㅁ 도구

ㅇ 정의:
데이터 파이프라인의 작업 흐름을 스케줄링하고 모니터링하기 위한 오픈소스 워크플로우 관리 도구로, DAG(Directed Acyclic Graph) 기반으로 작업을 정의하고 실행 순서를 제어함.

ㅇ 특징:
– Python 코드로 워크플로우를 정의하여 유연성이 높음
– 다양한 연동 연산자(Operator)를 제공하여 데이터베이스, 클라우드 서비스, API 등과 쉽게 통합 가능
– 웹 UI를 통해 DAG 상태, 실행 로그, 태스크 의존성을 시각적으로 확인 가능
– 스케줄링 주기, 의존성 관리, 재시도 정책 등을 세밀하게 설정 가능

ㅇ 적합한 경우:
– 정기적 데이터 수집, ETL 처리, 모델 학습 및 배포 작업을 자동화해야 하는 경우
– 복잡한 의존성을 가진 다단계 데이터 처리 파이프라인이 필요한 경우
– 클라우드 및 온프레미스 환경에서 모두 사용해야 하는 경우

ㅇ 시험 함정:
– Airflow는 실시간 스트리밍 처리용 도구가 아님 (배치 중심)
– DAG는 순환 구조를 허용하지 않음 (Directed *Acyclic* Graph)
– 태스크 실패 시 자동 재시도는 설정 필요, 기본값이 무제한 아님

ㅇ 시험 대비 “패턴 보기” 예시:
– (O) Airflow는 DAG 기반으로 데이터 파이프라인을 정의한다.
– (O) Airflow는 Python 코드로 워크플로우를 작성할 수 있다.
– (X) Airflow는 Kafka와 같이 실시간 스트리밍 처리를 기본 제공한다.
– (X) Airflow DAG는 순환 구조를 지원한다.

ㅁ 추가 학습 내용

Airflow 핵심 컴포넌트 정리

DAG(Directed Acyclic Graph)
– 작업(Task)들의 실행 순서를 정의한 비순환 방향 그래프
– 워크플로우의 전체 구조를 표현

Task
– DAG를 구성하는 개별 작업 단위
– Operator를 통해 구체적인 실행 내용을 가짐

Operator
– 특정 작업의 실행 로직을 정의하는 클래스
– 예: PythonOperator, BashOperator, BranchPythonOperator 등

Scheduler
– DAG 정의를 읽고, 실행 시점을 결정하여 Executor에 작업을 전달
– 스케줄에 맞춰 태스크를 트리거

Executor
– Scheduler로부터 받은 태스크를 실제로 실행하는 역할
– 종류별 특징
LocalExecutor: 단일 머신에서 멀티프로세스로 병렬 실행, 확장성 제한
CeleryExecutor: 분산 환경에서 여러 워커 노드로 병렬 실행, 확장성 높음
KubernetesExecutor: 태스크마다 개별 파드를 생성하여 실행, 컨테이너 기반 확장성 및 격리성 우수

Webserver
– Airflow UI 제공
– DAG 상태, 실행 로그, 태스크 상태 확인 및 수동 실행 가능

XCom
– 태스크 간 데이터 전달 메커니즘
– push/pull 방식으로 Python 객체 등 소규모 데이터 공유 가능

SLA 미준수 알림
– 태스크가 지정한 시간 내 완료되지 않을 경우 알림 전송
– SLA 설정 시 이메일 등으로 통보 가능

BranchOperator
– 조건에 따라 DAG 실행 경로를 분기
– 특정 조건에 맞는 태스크만 실행하고 나머지는 건너뜀

스케줄 표현식(CRON)
– 분, 시, 일, 월, 요일 등으로 실행 주기 지정
– 예: “0 12 * * *” → 매일 12시에 실행

catchup 옵션
– True: 과거 실행 주기까지 모두 실행(백필 수행)
– False: 현재 시점부터 실행

backfill
– 과거 날짜의 DAG 실행을 수동으로 수행하는 기능
– 데이터 재처리나 누락된 실행 보완에 사용

retry_delay
– 태스크 실패 시 재시도 전 대기 시간 설정
– 예: retry_delay=timedelta(minutes=5) → 5분 후 재시도

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*