Quick Start

숭맹이·2025년 4월 24일
0

🚀 왜 uv인가?

기존에는 pip, venv, pip-tools, poetry 등 다양한 도구를 사용해 Python 패키지를 관리해왔지만, uv는 특히 속도, 의존성 해석의 정확성, 그리고 단순한 UX에서 강점을 보입니다. 다음과 같은 장점이 있습니다:

  • Rust로 작성되어 매우 빠릅니다.
  • pip의 제약 파일(constraints.txt)을 그대로 활용 가능
  • 가상 환경 생성부터 패키지 설치까지 일관된 워크플로우 제공

Airflow처럼 의존성이 복잡한 패키지 설치에 특히 유리합니다.

📦 설치 전 요구 사항

  • Python 3.9, 3.10, 3.11, 3.12 중 하나 (Airflow 2.7.0 이상 기준)
  • uv 설치 (설치 가이드)

🏡 AIRFLOW_HOME 설정 (선택 사항)

export AIRFLOW_HOME=~/airflow  # 기본값은 ~/airflow

설치를 시작하기 전에 환경 변수를 설정하면, 관련 설정 파일이 원하는 디렉토리에 저장됩니다.

📥 Airflow 설치

AIRFLOW_VERSION=3.0.0
PYTHON_VERSION="$(python -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"

CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"

uv pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

Python 버전에 따라 URL이 달라지므로 자동 추출하는 방식 추천

▶️ Airflow Standalone 실행

airflow standalone
  • 웹 UI: http://localhost:8080
  • 관리자 계정 정보는 터미널에 출력됨
  • 예시 DAG(example_bash_operator) 활성화 후 상태 확인 가능

🧪 간단한 테스트

# 개별 태스크 실행
airflow tasks test example_bash_operator runme_0 2015-01-01

# DAG 백필 실행
airflow backfill create --dag-id example_bash_operator \
    --start-date 2015-01-01 \
    --end-date 2015-01-02

⚙️ 프로덕션 대비: 컴포넌트 개별 실행

airflow db migrate

airflow users create \
    --username admin \
    --firstname Peter \
    --lastname Parker \
    --role Admin \
    --email spiderman@superhero.org

airflow api-server --port 8080
airflow scheduler
airflow dag-processor
airflow triggerer

airflow users 명령은 Flask AppBuilder(FAB) 인증 매니저가 활성화된 경우에만 사용 가능

profile
👨🏻‍💻 Backend Developer

0개의 댓글