apache/airflow
Apache Airflow - A platform to programmatically author, schedule, and monitor workflows
Apache Airflow란 무엇인가?
Apache Airflow는 워크플로우 생성, 스케줄링, 모니터링을 위한 플랫폼입니다. 하지만 GUI를 클릭하는 대신 워크플로우를 코드로 작성합니다. 이렇게 하면 유지 관리, 버전 관리, 테스트, 다른 사람과 공유가 더 쉬워집니다.
Airflow에서 워크플로우는 DAG(방향성 비순환 그래프)라고 합니다. DAG는 일련의 작업과 실행 순서를 정의합니다. Airflow 스케줄러는 정의된 종속성을 존중하면서 작업자 머신 그룹에서 이러한 작업을 자동으로 실행합니다. 또한 다음을 제공합니다.
- DAG를 관리하기 위한 명령줄 도구
- 프로덕션에서 실행 중인 파이프라인을 보고, 진행 상황을 모니터링하고, 문제를 해결하기 위한 웹 인터페이스
무엇에 적합한가?
Airflow는 대부분 정적이고 변화가 느린 워크플로우에 가장 적합합니다. 구조가 실행마다 유사한 경우입니다. 일반적으로 다음에 사용됩니다.
- 데이터 처리 파이프라인 (단, 주의 사항이 있습니다. 아래 참조)
- 머신러닝 워크플로우 — 훈련, 재훈련, 평가, 배포
- AI/LLM 파이프라인 — 데이터 준비, 도구 호출, 모델 호출, 평가와 같은 단계를 조정합니다 (Airflow는 단계를 오케스트레이션합니다. AI 에이전트 자체로 작동하지는 않습니다)
Airflow에는 몇 가지 강한 의견이 있습니다.
- 작업은 멱등적이어야 합니다. 작업을 두 번 실행해도 동일한 결과가 나오고 중복 데이터가 생성되지 않아야 합니다.
- 작업은 서로 대량의 데이터를 전달해서는 안 됩니다. XCom이라는 기능을 사용하여 작은 메타데이터를 전달할 수 있지만, 대량의 데이터는 외부 서비스에서 처리해야 합니다.
- 스트리밍 솔루션이 아닙니다 하지만 실시간 데이터를 배치로 처리하는 데 자주 사용됩니다 (스트림에서 주기적으로 데이터를 가져옴).
유사한 프로젝트로는 Luigi, Oozie, Azkaban이 있습니다.
핵심 원칙
- 동적 — 파이프라인이 코드로 정의되므로 DAG를 프로그래밍 방식으로 생성하고 매개변수화할 수 있습니다.
- 확장 가능 — Airflow에는 많은 내장 연산자(작업 유형)가 있으며 필요에 맞게 확장할 수 있습니다.
- 유연 — Jinja 템플릿 엔진을 사용하여 풍부한 사용자 지정이 가능합니다.
요구 사항
Airflow는 특정 버전에서 테스트되었습니다.
- Python — 예: 안정 버전 3.3.2의 경우 3.10–3.14
- 플랫폼 — AMD64/ARM64
- Kubernetes — 다양한 버전 (예: 안정 버전의 경우 1.30–1.35)
- 데이터베이스 — PostgreSQL, MySQL, SQLite (SQLite는 테스트 전용이며 프로덕션에서는 사용하지 않음)
중요한 참고 사항:
- MariaDB는 테스트되지 않았으며 권장되지 않습니다.
- Airflow는 POSIX 호환 운영 체제(Linux, macOS)에서 실행됩니다. Windows에서는 WSL2 또는 Linux 컨테이너를 사용할 수 있습니다.
- 공식 Docker 이미지는 Debian Bookworm을 사용합니다.
설치 방법
Airflow는 PyPI에서 apache-airflow 패키지로 게시됩니다. Airflow는 라이브러리이자 애플리케이션이기 때문에 설치가 까다로울 수 있습니다. 종속성이 열려 있어 pip install apache-airflow만으로는 항상 작동하지 않을 수 있습니다. 권장 방법은 알려진 양호한 종속성 버전을 고정하는 제약 파일을 사용하는 것입니다.
pip install 'apache-airflow==3.3.2' \
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-3.3.2/constraints-3.10.txt"
apache-airflow[postgres,google]와 같은 추가 기능을 추가할 수도 있습니다.
설치에는 pip와 uv만 공식적으로 지원됩니다. Poetry나 pip-tools와 같은 도구는 지원되지 않습니다 (제약 파일을 변환하면 사용할 수 있지만).
Airflow를 얻는 다른 방법
이것들은 "편의" 패키지입니다. 공식 ASF 릴리스는 아니지만 공식 소스에서 빌드됩니다.
- PyPI 릴리스 —
pip를 통해 - Docker 이미지 — Kubernetes, docker-compose 등용
- GitHub 태그 — 소스 코드를 얻기 위해
사용자 인터페이스
Airflow 웹 UI에는 여러 보기가 포함됩니다.
- DAGs — 모든 워크플로우의 개요
- Assets — 데이터 자산 및 해당 종속성 보기
- Grid — DAG 실행의 시간 기반 그리드 보기
- Graph — DAG의 작업 종속성 및 현재 상태 시각화
- Home — 환경의 요약 통계
- Backfill — 특정 날짜 범위에 대해 DAG 실행
- Code — DAG의 소스 코드를 빠르게 보기
버전 관리
Airflow 2.0.0부터 이 프로젝트는 엄격한 시맨틱 버전 관리(SemVer)를 따릅니다. 이는 핵심 Airflow와 공급자 패키지에 각각 적용됩니다.
프로젝트 거버넌스
Apache Airflow는 Apache Software Foundation 프로젝트입니다. 공식 소스 코드 릴리스:
- ASF 릴리스 정책을 따릅니다
- 암호화 서명됩니다
- 프로젝트의 PMC 구성원이 투표합니다
또한 대규모 커뮤니티가 있습니다. Slack 채널에 참여하고, 코드를 기여할 수 있습니다 (자세한 내용은 README의 기여 섹션 참조).
이 설명은 프로젝트 README의 내용에만 기반합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트