의존성 구조: Extras, Provider 패키지, 시스템 의존성
Apache Airflow Official Documentation (in-repo snapshot) — Apache Software Foundation installation/dependencies.rst (전체, L1-91)
이 모듈을 다 읽으면
- extra와 provider의 차이를 예시와 함께 설명할 수 있다
- apache-airflow, airflow-core, airflow-task-sdk, provider 패키지의 관계를 구분할 수 있다
- Debian Bookworm 기준 시스템 레벨 의존성이 왜 필요한지 설명할 수 있다
apache-airflow 기본 PyPI 패키지는 시작에 필요한 최소한만 설치한다. 이 문서는 extras를 통한 추가 의존성 설치, Airflow가 여러 개의 개별 패키지(core, task-sdk, providers)로 나뉘어 배포되는 구조, 그리고 extras와 providers의 차이, 마지막으로 Debian 기준 시스템 레벨 의존성을 설명한다.
Extra 의존성
apache-airflow의 기본 PyPI 패키지는 최소한의 기능만 설치한다. 예를 들어 PostgreSQL 연동이 필요 없다면 배포판의 postgres-devel 같은 OS 패키지를 설치할 필요가 없다. 필요한 기능에 따라 추가 패키지를 extras로 선택 설치하면 된다. 전체 extras 목록과 각각이 무엇을 가능하게 하는지는 `/extra-packages-ref` 문서에서 확인할 수 있다.
핵심 포인트
- apache-airflow 기본 설치는 최소 기능만 포함하며 나머지는 extras로 선택 설치한다
여러 개로 나뉜 배포 패키지
Airflow는 하나의 패키지가 아니라 서로 연결된 여러 패키지로 배포된다. 메인 `apache-airflow` 패키지, 그 의존성이면서 실제 Airflow 핵심 기능을 구현하는 `airflow-core` 패키지, Dag 작성자가 Dag을 구현할 때 사용하는 `airflow-task-sdk` 패키지, 그리고 다수의 `Airflow provider` 패키지들로 구성된다.
기본 Airflow 설치에는 통합 기능(integration)이 거의 없으므로 필요한 provider는 사용자가 직접 설치해야 한다. 자체 provider를 개발해 설치하는 것도 가능하며, 전체 provider 목록은 `apache-airflow-providers:packages-ref` 문서에서 확인한다.
핵심 포인트
- apache-airflow는 airflow-core에 의존하고, Dag 작성자는 airflow-task-sdk를 사용하며, 통합 기능은 provider 패키지로 분리되어 있다
- 기본 설치에는 통합 기능이 거의 없어 필요한 provider는 사용자가 직접 추가해야 한다
Extras와 Providers의 차이
Extras와 providers는 서로 다른 개념이지만 많은 extras가 결국 provider 설치로 이어지기 때문에 혼동하기 쉽다. Extras는 Python setuptools의 표준 기능으로, '핵심' Airflow에 선택적 의존성 집합을 추가하는 방식이다. Provider 패키지는 그런 선택적 기능의 한 종류일 뿐이며, Airflow의 모든 선택적 기능이 provider를 가지는 것은 아니다.
대부분의 extras는 같은 이름의 provider와 연결되어 있다 — 예를 들어 `apache-airflow[google]` extra는 `airflow-core`와 `apache-airflow-providers-google`을 함께 설치한다. 하지만 `github_enterprise`, `kerberos`처럼 provider를 설치하지 않는 extras도 있다. 이들은 각각 GitHub Enterprise OAuth 인증, Kerberos 통합처럼 `airflow-core` 자체의 기능을 확장하는 추가 의존성만 더한다.
핵심 포인트
- extras는 setuptools의 선택적 의존성 기능이고, provider는 그 중 하나의 구현 형태일 뿐 모든 extra가 provider를 갖지는 않는다
- apache-airflow[google]처럼 이름이 같은 extra가 대응 provider를 설치하는 경우가 대부분이지만, github_enterprise·kerberos는 provider 없이 airflow-core 기능만 확장한다
시스템 레벨 의존성 (Debian Bookworm 기준)
Airflow를 설치하려면 일정한 시스템 레벨 요구사항이 필요하다. 문서는 Linux Debian 계열 배포판 기준으로 알려진 요구사항을 제시한다. Debian Bookworm(12)은 개발·테스트의 기본 플랫폼이며 CI/CD 시스템에서 사용되는 가장 최신 Debian 배포판으로, 개발·테스트·프로덕션 사용 모두에 권장된다.
필요한 대표적인 apt 패키지에는 apt-utils, ca-certificates, curl, dumb-init, freetds-bin, krb5-user, libgeos-dev, ldap-utils, libsasl2-2, libxmlsec1, locales, libffi8, libldap-2.5-0, libssl3, netcat-openbsd, openssh-client, python3-selinux, rsync, sasl2-bin, sqlite3, sudo, unixodbc 등이 포함된다.
핵심 포인트
- Debian Bookworm(12)이 개발·테스트·CI의 기준 플랫폼이며 프로덕션에도 권장된다
- freetds-bin, krb5-user, libsasl2, libxmlsec1, unixodbc 등은 provider 연동(DB, Kerberos, LDAP, XML 서명 등)에 필요한 대표적 시스템 패키지다