FerroAir
Apache Airflow 3.x-compatible orchestrator
자체 Amazon EC2 instance에서 실행하는 self-managed workflow orchestrator입니다. 단일 static Rust binary가 Apache Airflow 3.x scheduler, webserver, REST API v2, triggerer, DAG processor를 구현합니다. Apache Airflow 3.0 / 3.1 / 3.2 REST API v2 surface 및 AIP-72 task-execution interface와 wire-compatible하며, task body는 airflow.sdk를 통해 CPython에서 계속 실행됩니다.
FerroAir는 자체 EC2에서 Apache Airflow 3.x workload를 실행합니다(Apache Airflow는 AWS service가 아니라 open-source project입니다). port 8080에서 실제 web UI(Leptos single-page app, Node runtime 없음)를 제공합니다(DAG list, graph, grid, gantt, calendar, task-log view). port 9080의 metrics & admin port에서 Prometheus metrics와 health / live / ready probe를 제공하고, port 8081에서 AIP-72를 노출합니다. DAG는 Amazon S3에서 sync하고, metadata는 PostgreSQL 또는 SQLite에 저장하며, leader election이 있는 HA scheduler를 실행합니다. scheduler, webserver, triggerer, DAG processor를 hardened systemd unit 아래 하나의 static binary로 통합합니다 — multi-process Python deployment 대신.
해결하고자 하는 과제
Apache Airflow는 뛰어난 오픈 소스 워크플로 오케스트레이터(AWS 서비스가 아님)이지만, 일반적인 배포 시 스케줄러, 웹 서버, 트리거러, DAG 프로세서가 여러 Python 프로세스로 실행되어 운영상 관리가 번거로울 수 있습니다. 결국 팀은 메타데이터 DB, 브로커, 워커가 포함된 다중 프로세스 스택을 수작업으로 구성하고 유지 관리해야 합니다. 해결해야 할 과제는 Airflow와의 호환성을 유지하면서 오케스트레이션 레이어를 더욱 간편하게 실행하도록 만드는 것입니다.
작동 원리
- 1
단일 Rust 바이너리로 실행
FerroAir는 Apache Airflow 3.x 스케줄러, 웹 서버, REST API v2, 트리거러 및 DAG 프로세서를 단일 정적 Rust 바이너리로 구현하며, 하드닝된 systemd 유닛 하에 통합되어 실행됩니다. 다중 프로세스 Python 배포 대신 자체 Amazon EC2 인스턴스에서 실행됩니다.
- 2
태스크는 여전히 CPython에서 실행됨
FerroAir는 Rust에서 스케줄러 틱 루프, DAG 폴더 감시자, REST API, 메타데이터 액세스, 리더 선출 및 실행기 디스패치를 소유합니다. 태스크 본문은 Apache Airflow AIP-72 태스크 실행 인터페이스를 통해 업스트림 airflow.sdk를 거쳐 CPython에서 계속 실행됩니다.
- 3
기존 상태와 연계
DAG는 Amazon S3 버킷(또는 로컬 디스크)에서 동기화되며 메타데이터는 PostgreSQL 또는 SQLite에 저장됩니다. 웹 UI는 8080 포트, Prometheus 메트릭 및 프로브는 9080 포트, AIP-72는 8081 포트에서 제공됩니다.
주요 특징
Airflow 3.x-compatible: REST API v2 + AIP-72; task body는 airflow.sdk를 통해 CPython에서 계속 실행됩니다.
multi-process Python deployment 대신 하나의 static Rust binary(scheduler + webserver + triggerer + DAG processor); 실제 Leptos web UI(Node 없음).
DAG는 S3에서 sync, metadata는 PostgreSQL / SQLite, leader election이 있는 HA scheduler; CloudFormation Quick Start 포함.
포함 사항
- Amazon Linux 2023 AMI (x86_64, c7i / m7i 클래스 인스턴스에서 실행)
- Apache Airflow 3.x 스케줄러, 웹 서버, REST API v2, 트리거러 및 DAG 프로세서를 구현한 단일 정적 Rust 바이너리 (Apache Airflow 3.0/3.1/3.2의 REST API v2 서피스 및 AIP-72 태스크 실행 인터페이스와 와이어 호환 가능)
- Leptos 싱글 페이지 애플리케이션으로 빌드된 실제 웹 UI (Node 런타임 불필요, 8080 포트) - DAG 목록, 그래프, 그리드, 간트(gantt), 캘린더 및 태스크 로그 뷰 제공
- 전용 메트릭 및 관리 포트 9080 (Prometheus 메트릭 및 health, live, ready 프로브) 및 Python 워커를 위한 AIP-72 포트 8081
- Amazon S3 DAG 동기화, PostgreSQL 또는 SQLite 메타데이터 (Apache Airflow 3 Alembic 호환 스키마), 리더 선출을 지원하는 HA 스케줄러 페일오버
- 기존 관리형 Apache Airflow 배포 환경에서 연결(connection), 변수(variable) 및 풀(pool)을 가져올 수 있는 가져오기 도구, 런북, 호환성 매트릭스, 검증 절차가 포함된 구매 후 설명서
- 별도의 제어 평면, telemetry 홈콜, 라이선스 키 검증 없음 (AWS 청구서를 통해 인스턴스당 시간별 요금 청구, 연간 옵션 제공)
주요 활용 사례
자체 Amazon EC2에서 운영상 더 단순한 단일 바이너리로 Apache Airflow 워크플로를 실행하려는 경우
기존 관리형 Apache Airflow 배포 환경에서 연결, 변수 및 풀을 가져와 오케스트레이션 레이어를 마이그레이션하려는 팀
기존 Apache Airflow REST API v2 클라이언트와의 호환성을 유지하며 실행해야 하는 기존 워크로드
별도의 제어 평면 및 telemetry 홈콜 없이 자체 VPC 내에서 전적으로 오케스트레이터를 실행하는 경우
자주 묻는 질문
Apache Airflow와 얼마나 호환되나요?
FerroAir는 Apache Airflow 3.0, 3.1, 3.2 REST API v2 서피스 및 Apache Airflow AIP-72 태스크 실행 인터페이스와 와이어 호환됩니다. REST API v2 서피스가 구현되어 있어 기존 Apache Airflow REST API v2 클라이언트를 그대로 지원합니다. 전체 호환성 매트릭스는 제품 설명서를 참조하십시오.
내 Python 태스크 코드가 그대로 실행되나요?
예. 태스크 본문은 Apache Airflow AIP-72 태스크 실행 인터페이스를 통해 업스트림 airflow.sdk를 거쳐 CPython에서 계속 실행됩니다. Rust 바이너리는 스케줄러 틱 루프, DAG 폴더 감시자, REST API, 메타데이터 액세스, 리더 선출 및 익스큐터 디스패치를 담당하며 — 태스크 실행 런타임 자체는 CPython으로 유지됩니다.
이것은 AWS 서비스를 대체하는 제품인가요?
Apache Airflow는 오픈 소스 프로젝트이며 AWS 서비스가 아닙니다. FerroAir는 해당 Apache Airflow 3.x 워크로드를 사용자의 Amazon EC2 인스턴스에서 실행하는 자체 관리형 워크플로 오케스트레이터입니다. 사용자의 VPC 내부에서 실행할 수 있는 일반적인 Amazon Linux 2023 AMI로 제공됩니다.
기존 Airflow 배포에서 마이그레이션할 수 있나요?
예. FerroAir는 기존 매니지드 Apache Airflow 배포에서 커넥션, 변수, 풀을 가져오고 DAG 폴더를 동기화할 수 있습니다. 메타데이터는 Apache Airflow 3 Alembic 호환 스키마를 사용하여 PostgreSQL 또는 SQLite에 저장됩니다. AMI의 구매 후 문서에서 가져오기 도구, 런북, 호환성 매트릭스 및 검증 단계를 안내합니다.
HA 및 시크릿 관리는 어떻게 작동하나요?
HA 스케줄러는 리더 선출(openraft)을 통해 장애 조치(failover)를 수행합니다. 여러 인스턴스를 실행하면 리더 선출이 스탠바이를 승격시킵니다. 시크릿은 환경 변수, AWS Secrets Manager, GCP Secret Manager, Azure Key Vault 또는 Vault에서 가져오며, 커넥션과 변수는 Fernet으로 암호화됩니다. 인증은 FAB auth, OAuth, OIDC, SAML 및 LDAP을 지원합니다.
요금제 모델
시간당 software fee + EC2(c7i / m7i class, x86). instance type별 metered 과금, annual option 제공.