Data Analysis/기타

Airflow

subinz 2026. 7. 31. 18:55

Apache Airflow란? DAG·Task·Operator 핵심 개념 정리

Apache Airflow는 데이터 수집, 전처리, 저장과 같은 여러 작업의 실행 순서와 일정, 의존관계를 관리하는 워크플로 오케스트레이션 도구다.

Airflow가 직접 데이터를 분석하는 것은 아니다. 어떤 작업을 언제 실행하고, 앞선 작업이 성공했을 때 어떤 작업을 이어서 실행할지를 관리한다.

예를 들어 일일 매출 데이터 파이프라인을 다음과 같이 자동화할 수 있다.

주문 데이터 수집
→ 데이터 전처리
→ 데이터베이스 저장
→ 매출 보고서 생성
→ 완료 알림
 

Airflow의 핵심 구성 요소

Airflow의 기본 구조는 다음 세 가지 개념으로 이해할 수 있다.

구성 요소의미
DAG 전체 작업 흐름과 실행 순서를 정의
Task DAG 안에서 실제로 실행되는 개별 작업
Operator Task가 어떤 작업을 수행할지 정의하는 템플릿

1. DAG란?

DAG(Directed Acyclic Graph)는 여러 Task의 실행 순서와 의존관계를 정의한 전체 작업 흐름이다.

DAG 자체가 데이터를 처리하는 것은 아니며 다음 내용을 관리한다.

  • 어떤 Task를 실행할 것인지
  • Task를 어떤 순서로 실행할 것인지
  • 언제 실행할 것인지
  • 앞선 Task가 실패했을 때 어떻게 처리할 것인지

DAG는 방향성이 있고 작업 흐름이 이전 단계로 되돌아가는 순환 구조를 가지지 않는다.

데이터 수집 → 전처리 → 저장 → 알림
 

2. Task란?

Task는 DAG 안에서 실제로 실행되는 하나의 작업 단위다.

예를 들어 다음 작업들이 각각 하나의 Task가 될 수 있다.

  • API에서 데이터 수집
  • 결측값 처리
  • 데이터베이스에 결과 저장
  • 보고서 생성
  • 이메일 전송
데이터 수집 → 데이터 전처리 → DB 저장 → 완료 알림
   Task 1        Task 2         Task 3       Task 4
 

각 Task는 독립적인 작업이지만 의존관계를 설정하여 앞선 Task가 성공한 뒤 다음 Task가 실행되도록 만들 수 있다.


DAG와 Task의 관계

DAG가 전체 업무 프로세스를 나타내는 설계도라면, Task는 설계도 안에서 실행되는 개별 작업이다.

DAG
├─ 데이터 수집 Task
├─ 데이터 전처리 Task
├─ 데이터 저장 Task
└─ 완료 알림 Task
 

하나의 DAG 안에는 여러 Task가 포함될 수 있으며, DAG가 Task 사이의 실행 순서를 관리한다.


3. Operator란?

Operator는 Task가 어떤 작업을 수행할지 정의한 템플릿이다.

DAG 안에서 Operator를 생성하면 실제로 실행되는 Task가 된다.

예를 들어 파이썬 함수를 실행하는 Operator를 사용해 데이터 전처리 Task를 만들거나, 이메일 발송 Operator로 완료 알림 Task를 만들 수 있다.

Operator: 작업 방식 정의
Task: DAG 안에서 실행되는 Operator의 인스턴스
 

주요 Operator

Operator기능활용 사례
PythonOperator 파이썬 함수 실행 데이터 전처리, 집계, 분석
BashOperator Bash 명령어 실행 스크립트 실행, 파일 처리
EmailOperator 이메일 발송 작업 완료 또는 오류 알림
HttpOperator 외부 HTTP API 호출 주문·날씨·환율 데이터 수집
BranchPythonOperator 조건에 따라 실행 경로 선택 매출 목표 달성 여부에 따라 작업 분기
ShortCircuitOperator 조건이 거짓이면 후속 Task 생략 신규 데이터가 없을 때 작업 중단
DockerOperator Docker 컨테이너에서 작업 실행 독립된 환경에서 전처리·모델 실행
KubernetesPodOperator Kubernetes Pod에서 작업 실행 작업별 독립 자원 할당
TriggerDagRunOperator 다른 DAG 실행 요청 수집 DAG 완료 후 분석 DAG 실행

BranchPythonOperator와 ShortCircuitOperator의 차이

두 Operator 모두 조건에 따라 실행 흐름을 제어하지만 역할이 다르다.

구분BranchPythonOperatorShortCircuitOperator
목적 여러 경로 중 하나를 선택 조건이 거짓이면 후속 작업 중단
예시 목표 달성 시 보고서, 미달 시 경고 신규 데이터가 없으면 분석 생략

BranchPythonOperator는 조건에 따라 실행할 Task를 선택한다.

매출 목표 달성 여부 확인
├─ 달성 → 보고서 생성
└─ 미달 → 경고 알림
 

ShortCircuitOperator는 조건이 충족되지 않으면 이후 Task를 건너뛴다.

신규 데이터 존재 여부 확인
├─ 있음 → 전처리 실행
└─ 없음 → 후속 작업 생략
 

4. Airflow 활용 예시

쇼핑몰의 일일 매출 데이터를 처리한다고 가정한다.

HttpOperator
쇼핑몰 API에서 주문 데이터 수집
        ↓
ShortCircuitOperator
신규 주문 데이터가 있는지 확인
        ↓
PythonOperator 또는 DockerOperator
데이터 전처리 및 매출 집계
        ↓
BranchPythonOperator
매출 목표 달성 여부에 따라 경로 선택
        ↓
EmailOperator
결과 또는 경고 메시지 전송
 

각 Operator가 하나의 Task를 담당하고, Task 사이의 실행 순서와 의존관계를 DAG가 관리한다.


5. Airflow를 사용하는 이유

Airflow를 사용하면 복잡한 데이터 작업을 일정에 맞춰 자동으로 실행하고 관리할 수 있다.

  • 반복 작업 자동화
  • Task 실행 순서 관리
  • 정해진 시간에 DAG 실행
  • 작업 성공·실패 상태 확인
  • 실패한 Task 재실행
  • 조건에 따른 실행 흐름 제어
  • 로그와 실행 이력 관리

예를 들어 매일 오전 9시에 데이터를 수집하고, 수집이 성공했을 때만 전처리와 저장 작업을 실행하도록 설정할 수 있다.


Airflow 사용 시 주의할 점

Airflow는 데이터를 직접 처리하는 분석 도구가 아니라 작업 실행을 관리하는 도구다.

따라서 대용량 데이터 연산은 Airflow 내부에서 직접 처리하기보다 Spark, Docker, Kubernetes, 데이터베이스 등의 외부 실행환경에 맡기고 Airflow가 실행 순서를 관리하도록 구성하는 것이 좋다.

또한 Task 사이에 대용량 데이터를 직접 전달하기보다 파일 저장소나 데이터베이스에 저장한 뒤 다음 Task가 읽도록 설계하는 것이 일반적이다.


정리

Apache Airflow는 여러 데이터 작업의 일정과 실행 순서를 관리하는 워크플로 오케스트레이션 도구다.

  • DAG: 전체 작업 흐름과 의존관계
  • Task: 실제로 실행되는 개별 작업
  • Operator: Task가 수행할 작업을 정의하는 템플릿
Operator로 Task를 만들고
→ 여러 Task를 DAG로 연결하고
→ Airflow가 일정과 실행 상태를 관리한다.
 

Airflow를 활용하면 데이터 수집, 전처리, 저장, 분석, 알림으로 이어지는 파이프라인을 자동화하고 안정적으로 관리할 수 있다.

 

'Data Analysis > 기타' 카테고리의 다른 글

절대 경로와 상대 경로  (0) 2026.07.31