피드로 돌아가기
We rewrote Apache Airflow's control plane in Go (and kept the UI)
Dev.toDev.to
Infrastructure

Python Control Plane을 Go로 대체하여 Airflow의 구조적 병목 해결

We rewrote Apache Airflow's control plane in Go (and kept the UI)

Alisson Rosa2026년 6월 3일11advanced

Context

Python 기반 Control Plane의 GIL 및 DagBag 재파싱 비용으로 인한 스케줄러 지연 발생. 공유 이미지 사용에 따른 의존성 충돌 및 Celery Worker의 리소스 누수로 인한 OOMKilled 빈번.

Technical Solution

  • Python Scheduler 및 Triggerer를 Go로 전면 재작성하여 고성능 동시성 처리 구현
  • Sensor를 2 KB 규모의 Goroutine으로 처리하여 리소스 효율 극대화
  • DAG별 개별 Immutable Container Image 빌드 체계 도입을 통한 의존성 격리 및 충돌 방지
  • Pod-per-task 실행 모델 강제를 통한 Task 단위 리소스 생명주기 관리 및 프로세스 누수 원천 차단
  • Python List Comprehension 기반의 Map-Reduce 패턴을 컴파일 타임에 분석하여 XCom 파이프라인 자동 구성
  • Airflow 3.2.x UI 및 HTTP API 규격을 그대로 유지하여 마이그레이션 비용 최소화

1. 워크플로우 엔진 선택 시 Control Plane의 언어적 제약이 스케줄링 지연에 미치는 영향 검토

2. DAG 간 의존성 충돌 방지를 위해 공유 런타임 대신 Task/DAG 단위 컨테이너 격리 전략 적용

3. 복잡한 Fan-in/Fan-out 구조 설계 시 데이터 전달 계층(XCom 등)의 추상화 수준 확인

원문 읽기