Apache Airflow는 데이터 파이프라인과 작업 워크플로우를 자동화하고 관리하기 위한 플랫폼이다. 주로 데이터 엔지니어링, ETL(Extract, Transform, Load) 작업, 작업 스케줄링 등에 사용된다.
주요 특징
DAG (Directed Acyclic Graph)는 Airflow에서 작업의 흐름과 의존성을 정의하는 구조다. DAG은 노드와 엣지로 구성된 그래프이며, 노드는 작업(Task)을 나타내고, 엣지는 작업 간의 의존성을 나타낸다.
DAG의 주요 구성 요소
>> 또는 << 연산자를 사용하여 작업 간의 의존성을 설정할 수 있다.BashOperator
기능: 쉘 명령어를 실행한다.
용도: 간단한 스크립트 실행, 셸 명령어, 그리고 Unix 명령어를 사용할 때 유용하다.
PythonOperator
기능: 파이썬 함수를 실행한다.
용도: 파이썬 코드 또는 로직을 작업으로 실행할 때 사용한다.
EmptyOperator
기능: 아무 작업도 수행하지 않는다.
용도: DAG 내에서 작업 간의 의존성을 설정하거나, DAG의 흐름을 정의한다.
BranchPythonOperator
기능: 조건에 따라 실행할 작업을 결정한다.
용도: 특정 조건에 따라 여러 경로 중 하나를 선택하는 경우에 사용한다.

PythonVirtualenvOperator
사용: pip install virtualenv
기능: 작업 실행 전에 지정된 Python 패키지를 설치하고 독립적인 가상 환경을 설정한다. 가상 환경 내에서 필요한 파이썬 패키지 및 의존성을 관리한다. 가상 환경 내에서 지정된 파이썬 함수를 실행한다.
용도: 의존성을 격리하고 환경 일관성을 유지하며 패키지 관리가 필요할 때 사용한다.

python_callable: 사용할 함수명을 입력하여 task에서 함수를 사용한다. requirements: pip install과 비슷한 개념으로 git+로 연결한 레파지토리 또는 브랜치의 환경설정을 가져오는 역할을 한다. system_site_packages: Python의 가상 환경을 사용할 때, 시스템에 이미 설치된 python 패키지들을 가상 환경에서 접근할 수 잇도록 허용할지를 결정하는 설정이다. 기본값은 'False'이며 'True'로 설정하면 가상 환경에서 시스템 전역에 설치된 다른 패키지들도 사용할 수 있다.