이 게시물은 Apache Airflow의 PMC이자 Astronomer의 CSO이신 Vikram Koka 님의 게시글을 한국어로 번역한 내용입니다
원문 보기 → Apache Airflow® 3 Release Candidate - Apr 4, 2025
Apache Airflow 3.0이 Airflow 프로젝트의 큰 이정표가 될 것이라고 이전에도 언급한 적이 있습니다. 특히 2024년 9월 Airflow Summit에서 그렇게 언급했습니다. 이제 Airflow 3.0의 릴리즈 후보 빌드를 발표하게 되어 매우 기쁩니다.
우리는 릴리즈 후보에 대한 ASF(Apache Software Foundation) 프로세스를 따르고 있으므로 릴리스 후보는 최종 사용자 사용을 위한 것이 아니라 Apache Airflow 기여자와 커뮤니티 구성원이 Airflow 3.0을 일반적으로 출시하기 전에 테스트하기 위한 것입니다. 그런 다음 Apache Airflow PMC가 철저히 테스트된 버전을 릴리스할지 투표합니다. 이 게시물에서 릴리스 후보가 승인되면 3.0에서 무엇을 기대할 수 있는지 간략하게 설명할 것입니다.
커뮤니티 활동
이 릴리스는 글로벌 개발자 커뮤니티의 노력 없이는 불가능했을 것입니다. 우리는 매달 100명 이상의 개발자가 기여하는 것을 꾸준히 보았고, 이 프로젝트에 대한 놀라운 그들의 헌신과 헌신에 영감을 받고 겸허해졌습니다.
Airflow 3.0은 Airflow 역사상 가장 큰 릴리스로, 상당한 아키텍처 변경과 완전히 새로 작성된 사용자 인터페이스가 포함되어 있습니다. 이 릴리스 후보는 여정의 핵심 단계이며, ASF 투표 및 검토 과정을 거쳐 일반 출시에 이르게 되면서 이 업데이트를 여러분과 공유하고 싶었습니다.
이번 릴리스에 포함된 자세한 내용은 다음과 같습니다.
많이 요청된 UX기능
DAG 버전 관리
Airflow에서 가장 많이 요청된 기능 중 하나는 DAG 버전 관리입니다. 이는 릴리스의 일부인 두 개의 AIP로 나뉩니다.
여기에는 그리드 및 그래프 뷰에서 UI를 통해 사용할 수 있는 개선된 DAG 기록이 포함됩니다. DAG 번들링 및 구문 분석도 완료되어 사용자가 번들을 다운로드하고 Git, NFS 또는 기타 소스에서 DAG를 검색할 수 있습니다.
DAG 기록은 감사 및 진단에 중요하며, 특히 DAG 구조가 변경될 때 더욱 그렇습니다. 아래에는 DAG 버전 간에 작업이 삭제되었을 때의 DAG 기록을 보여주는 몇 가지 스크린샷이 포함되어 있습니다.
Backfill 개선
또 다른 오랜 사용자 요청은 backfill필에 대한 더 나은 지원이었습니다. 종종 머신 러닝의 맥락에서 논의되는 backfill은 기존 ETL 및 ELT 사용 사례에도 적용됩니다. 이는 “Scheduler managed backfill”( AIP-78 )의 일부로 정의되었습니다. 이 작업은 이제 완료되었습니다. backfill은 향상된 확장성과 진단을 위해 Scheduler와 통합되었습니다. backfill은 UI에서도 시작할 수 있습니다.
언제 어디서나 어떤 언어로든 실행 가능
어디서나, 어떤 언어로든 실행 가능
Airflow 3의 기본 목표는 모든 환경에서 모든 언어로 실행을 허용하는 것입니다.
여기의 핵심 구성 요소는 Task Execution Interface( AIP-72 )로, Airflow를 클라이언트-서버 아키텍처로 진화시킬 수 있게 하며, 이는 Airflow 역사상 가장 중요한 아키텍처 변화 중 하나입니다.
이는 Celery, Kubernetes 및 Local Executors를 지원하지만 새로운 기능도 지원합니다.
이 변경의 구성 요소는 Task Execution Interface에 대한 입력을 나타내는 API 서버입니다.이 기본 기능은 작업 실행 API의 형태로 다중 클라우드 배포 및 다중 언어 지원을 지원합니다.
Airflow 3 릴리스에는 기존 DAG에 대한 이전 버전과의 호환성을 지원하는 Python TaskSDK가 포함되어 있습니다. Golang으로 시작하는 추가 언어에 대한 TaskSDK는 앞으로 몇 달 동안 출시될 예정입니다.
Edge Executor( AIP-69 )는 Task Execution Interface 작업 위에 구축된 증분 기능입니다. 초기 구체화는 Airflow 2x를 기반으로 하는 실험 모드로 출시되었으며 이 executor는 이제 Airflow 3 API 서버를 활용하도록 진화했습니다. 이것은 provider package로 제공됩니다.
Data Assets & Event-driven 스케줄링
Airflow에서 데이터 인식 지원이 Datasets에서 Data Assets으로 진화한 과정은 아래에 자세히 설명된 여러 AIP로 구분되었으며, 이는 모두 이 릴리스의 일부입니다.
Datasets에서 Data Assets으로의 근본적인 진화는 “Data Assets 소개”( AIP-74 ) 의 일부로 이루어졌습니다 . 이는 아래에 자세히 설명된 다른 기능에 의해 활용되는 워처의 개념을 소개합니다.
Data Assets을 둘러싼 중요한 개선 사항은 이번 릴리스에 포함된 Python 데코레이터 구문을 사용하여 DAG로 자산을 쉽게 정의할 수 있는 새로운 Asset Centric Syntax( AIP-75 )입니다.
External event driven scheduling( AIP-82 )은 위에 설명된 기본 Data Asset작업, 특히 Watcher를 기반으로 합니다. AIP에 정의된 초기 범위는 완료되었으며 이제 “Common Message Bus” 인터페이스를 통합하고 있습니다. 이 릴리스에는 AWS SQS에 대한 위의 구현도 포함되어 있으며, AWS SQS에 메시지가 도착하면 DAG가 트리거되는 것을 보여줍니다.
Inference execution and hyper-parameter tuning
많은 ML 및 AI 엔지니어가 이미 ML/AI Ops, 특히 모델 학습에 Airflow를 사용하고 있습니다. 그러나 추론 실행에는 과제가 있었습니다. 비데이터 간격 Dags에 대한 지원을 추가하여 추론 실행을 위한 Airflow를 개선하는 것은 중요한 변경 사항입니다(죄송합니다. 어려운 표현입니다). 이 작업은 “Remove Execution date unique constraint from DAG run”( AIP-83 ) 의 일부로 다루어집니다.
사용성 개선 및 보안
UI현대화
Airflow UI는 Airflow 3의 일부로 완전히 다시 작성되었습니다. React와 FastAPI를 기반으로 다시 만드는 것은 거대한 프로젝트였으며 아래에 자세히 설명된 대로 여러 AIP로 나뉘었습니다.
새로운 UI의 기반은 REST API와 UI Operations( AIP-84 ) 를 위한 내부 API 세트로, 둘 다 이제 FastAPI를 기반으로 합니다. 이러한 API는 위에서 설명한 API 서버의 일부로 Task Execution 프레임워크의 일부로 제공됩니다.
Airflow 3.0 UI가 상당히 개선되었으며 그리드 및 그래프 뷰를 모두 포함하는 간소화된 사용자 경험 워크플로가 포함되어 있습니다. DAG와 자산 간의 상호 작용도 더욱 간소화되었습니다. 사용자 경험은 항상 진행 중인 작업이며 여러분들의 피드백에 매우 감사드립니다. 이는 Modern Web Application 제안( AIP-38 )의 일부로 자세히 설명되어 있습니다.
이 프로젝트의 일환으로 Flask AppBuilder(FAB)는 이제 별도의 Provider Package로 옮겨졌으며 더 이상 Core Airflow 패키지의 일부가 아닙니다. 이를 통해 이전 버전과의 호환성을 유지하면서 보안 및 유지 관리 업데이트 프로세스가 더 쉬워졌습니다. 이는 “Flask App Builder를 Core Dependency로 제거” 제안( AIP-79 )의 일부로 문서화되었습니다.
보안
작업 실행 인터페이스와 API 서버의 주요 이점은 작업 격리입니다. 이는 Airflow 배포가 여러 팀에서 공유될 때 더 나은 보안 태세를 위해 Airflow 엔터프라이즈 배포에서 자주 요청되었습니다. 더 자세한 요구 사항이 발견됨에 따라 이 기반 위에 추가 보안 및 권한 부여 패턴을 개발할 수 있습니다.
CLI를 개선하고 직접 액세스하는 대신 Airflow API를 사용하여 CLI에서 유지 관리 부담을 줄이는 것은 Airflow에 중요한 진화입니다. 이제 핵심 Airflow CLI를 두 부분으로 나누었습니다. 첫 번째는 로컬 개발 및 이전 버전과의 호환성을 위한 것이고 두 번째는 API를 사용하여 원격 액세스를 위한 것입니다. 두 번째는 Core Airflow와 함께 선택적으로 설치할 수 있는 "airflowctl"이라는 새로운 provider package입니다. 이는 “API 통합을 통한 CLI의 보안 강화” 제안( AIP-81 )의 일부로 더 자세히 설명되어 있습니다.
Next Steps
이 여정에 참여해 주셔서 감사합니다. 여러분 모두와 함께 일하게 되어 기쁩니다. Airflow 3의 많은 변경 사항은 Airflow 설문 조사, Github 이슈, Slack 댓글의 형태로 커뮤니티로서 여러분이 제공한 피드백에 직접 기반을 두고 있습니다. 계속해서 피드백을 공유해 주시면, 저희가 지속적으로 개선하고 고품질 릴리스를 제공할 수 있습니다.
릴리스 후보에 대한 투표 과정은 앞으로 몇 주가 걸릴 것으로 예상합니다. 이 릴리스를 일반적으로 사용할 수 있게 되면 Airflow 개발자 목록, Slack 및 블로그를 포함한 일반적인 채널을 통해 업데이트해 드리겠습니다.