[1] 사용 목적
- 여러 작업을 정해진 순서와 규칙에 따라 자동으로 실행&관리하기 위한 워크플로우 오케스트레이션 도구임
- 데이터 처리나 시스템 작업을 언제, 어떤 순서로, 실패 시 어떻게 실행할지를 코드로 정의하는 도구
- 작업을 실행하도록 지시하고, 상태를 추적하며, 실패를 관리하는 역할을 함
[2] 왜 필요한가?
현실의 데이터는 다음과 같은 문제를 가지고 있음
- 데이터를 가져오는 시간이 반복됨
- 데이터를 가져오는 순서가 중요함
- 중간 과정에 실패가 발생할 수 있음
- 사람이 수동으로 관리하기 어려움
이것을 스크립트로만 관리하면
- 실패 시 어디서 멈췄는지 알기 어려움
- 재시도, 알림, 의존성 관리가 매우 번거로워 짐
→ Airflow는 이 문제들을 중앙에서 통제하기 위해 등장함
[3] 주요 사용처
- ETL / ELT : 여러 소스에서 데이터를 가져와 가공 및 저장하는 전 과정 자동화
- MLOps : 머신러닝 모델 학습 데이터 준비부터 학습, 평가, 배포까지의 단계를 연결
- 인프라 관리 : 특정 시간에 클라우드 자원을 생성 혹은 삭제하는 작업 관리
[4] 핵심 용어
① DAG (Directed Acyclic Graph)
- 정의: '방향성이 있고 순환하지 않는 그래프'입니다. Airflow에서 작성하는 하나의 전체 작업 흐름(Workflow) 단위입니다.
- 사용 방식: Python 파일 하나가 보통 하나의 DAG가 됩니다. 이 안에 어떤 작업들이 어떤 순서로 연결될지 정의합니다.
② Operator (오퍼레이터)
- 정의: 실제로 실행할 작업의 종류를 정의하는 템플릿입니다.
- 사용 방식: Python 함수를 실행하고 싶으면
PythonOperator, SQL 쿼리를 실행하고 싶으면 PostgresOperator를 선택하여 사용합니다.
③ Task (태스크)
- 정의: Operator가 구체적인 설정값과 결합하여 DAG 안에 배치된 상태, 즉 '작업의 최소 단위'입니다.
- 사용 방식: DAG라는 도면 위에 배치된 하나하나의 공정 단계라고 이해하면 됩니다.
④ Scheduler (스케줄러)
- 정의: 모든 DAG와 Task를 감시하며 실행 시점이 된 작업을 실행기로 보내는 '두뇌' 역할의 프로세스입니다.
- 사용 방식: 사용자가 직접 조작하기보다, 백그라운드에서 설정된 시간에 맞춰 작업을 트리거하는 역할을 수행합니다.
- 정의: Task와 Task 사이에서 작은 데이터를 공유하기 위한 메커니즘입니다.
- 사용 방식: 첫 번째 Task에서 생성된 특정 ID나 결과값을 두 번째 Task의 입력값으로 넘겨줄 때 사용합니다.

[5] 실무 적용 시 유의사항
- 데이터 전송의 한계: XCom은 매우 작은 메타데이터 공유용입니다. 수 GB의 데이터를 Task 간에 직접 주고받으려 하면 DB가 마비됩니다. 큰 데이터는 반드시 외부 저장소(S3, GCS)를 거쳐야 함
- 리소스 관리: Airflow 자체는 계산기가 아님. 무거운 AI 연산(예: 모델 학습)은 Airflow 서버가 아닌 별도의 Worker나 Kubernetes 클러스터에서 실행되도록 설계해야 함.