Apache Airflow 3.1.0은 데이터 오케스트레이션 팀을 위한 인간 참여형 워크플로, 17개 언어의 국제화, 마감일 알림, React 플러그인 시스템을 도입했습니다.
Apache Airflow 3.1.0 출시를 발표하게 되어 매우 기쁩니다 . 이 업데이트는 데이터 워크플로의 중심에 인간을 두는 것을 목표로 합니다. 이번 릴리스는 자동화 프로세스에서 인간의 의사 결정을 위한 강력한 새 기능, 포괄적인 국제화 지원, 그리고 개발자 경험의 대폭적인 개선을 제공합니다.
세부 정보 :
PyPI: https://pypi.org/project/apache-airflow/3.1.0/
Core Airflow 문서: https://airflow.apache.org/docs/apache-airflow/3.1.0/
Task SDK 문서: https://airflow.apache.org/docs/task-sdk/1.1.0/
릴리스 노트: https://airflow.apache.org/docs/apache-airflow/3.1.0/release_notes.html
소스: https://airflow.apache.org/docs/apache-airflow/3.1.0/installation/installing-from-sources.html
제약 조건: https://github.com/apache/airflow/tree/constraints-3.1.0
인간 참여형(HITL): 자동화와 인간의 판단이 만나는 경우
이 강력한 기능은 자동화된 프로세스와 인간의 전문성 간의 격차를 메워 Airflow를 다음과 같은 분야에 매우 귀중하게 만듭니다.

-
AI/ML 모델 검증 : 모델 출력에 대한 인간 검토를 위해 추론 파이프라인 일시 중지
-
콘텐츠 검토 : 게시 전에 인간 검토자를 통해 콘텐츠를 라우팅합니다.
-
승인 워크플로 : 민감한 작업에 대해 관리자 승인이 필요합니다.
-
데이터 품질 게이트 : 데이터 관리자가 중요한 데이터 세트를 검증할 수 있도록 허용
HITL 작업은 Airflow UI에서 직관적인 웹 양식을 표시하는 동안 지연된 상태로 일시 중지됩니다. 적절한 역할을 가진 사용자는 정보에 입각한 결정을 내리기 전에 컨텍스트 데이터, DAG 매개변수 및 XCom 값을 검토할 수 있습니다.
예제 코드:
from airflow.sdk import DAG
from airflow.providers.standard.operators.hitl import HITLOperator
with DAG("content_moderation", schedule="@daily") as dag:
moderate_content = HITLOperator(
task_id="review_content",
message="Please review this content for publication",
data_key="content_to_review"
)
UI 개선 및 성능
캘린더 및 간트 뷰가 다시 돌아왔습니다
Airflow 2.x에서 사랑받았던 캘린더와 간트 차트 뷰를 기억하시나요? 3.0 릴리스에서는 제외되었던 이 기능이 최신 React UI에 맞춰 완전히 새롭게 재구축되어 돌아왔습니다.
새로운 캘린더 보기는 특정 기간과 상태를 쉽게 검색할 수 있는 필터링 기능을 갖춘 진정한 상호 작용 기능을 제공합니다.

이제 간트 차트가 그리드 보기에 직접 통합되어 이전 버전보다 훨씬 빠르게 렌더링되므로 성능 문제 없이 타임라인 관점을 얻을 수 있습니다.
실제로 중요한 테마 업데이트
우리는 현대적인 디자인 원칙을 사용하여 색상 팔레트를 새로 고쳐 UI를 보다 일관되고 전문적으로 만들었으며, 무엇보다도 UI의 접근성을 높이기 위해 대비율을 주의 깊게 살펴보았습니다.
기타 개선 사항
여러 페이지에 걸쳐 필터링 옵션을 더 추가했습니다!
또한, 이제 즐겨 찾는 DAG를 고정 하여 목록 상단에 유지하거나 간편하게 필터링할 수 있습니다. 수백 개의 워크플로를 처리할 때 큰 차이를 만들어내는 작은 기능 중 하나입니다.
Volker Janz에게 크레딧을 드립니다.
UI 개발 이정표 : Airflow 3.1.0은 2.10 릴리스보다 5배 더 많은 UI 풀 리퀘스트를 제공하고 Airflow 3.0보다 50% 더 많은 리퀘스트를 제공합니다 . 이는 커뮤니티가 사용자 경험의 우수성을 위해 노력하고 있음을 보여줍니다.
마감일 알림 : 사전 예방적 워크플로 모니터링
사후 모니터링은 이제 그만! 마감일 알림 기능은 DAG 실행이 시간 임계값을 초과할 때 사전 알림을 제공하여 SLA 준수 및 중요 워크플로의 적시 완료를 보장합니다.
다음을 지정하여 모니터링을 구성합니다.
-
참조 지점 : DAG 대기 시간, 논리적 날짜 또는 고정 날짜/시간
-
간격 : 시간 임계값(양수 또는 음수)
-
콜백 : Airflow Notifiers 또는 사용자 정의 함수를 통한 알림
예제 코드:
from datetime import timedelta
from airflow.sdk.definitions.deadline import DeadlineAlert, DeadlineReference, AsyncCallback
from airflow.providers.slack.notifications.slack_webhook import SlackWebhookNotifier
with DAG(
"critical_etl",
deadline=DeadlineAlert(
reference=DeadlineReference.DAGRUN_QUEUED_AT,
interval=timedelta(hours=2),
callback=AsyncCallback(
SlackWebhookNotifier,
kwargs={"text": "🚨 Critical ETL missed deadline!"}
)
)
) as dag:
# Your tasks here
일일 ETL 모니터링, 중요한 마감일 전 알림, 리소스가 제한된 워크플로 확대에 적합합니다.
17개 언어로 글로벌 진출
Airflow가 이제 여러분 팀의 언어로 소통합니다. 말 그대로입니다. 아랍어, 중국어, 프랑스어, 독일어, 스페인어 등 17개 언어 에 대한 포괄적인 다국어 지원을 추가했습니다 . 인터페이스는 브라우저 환경 설정을 자동으로 감지하지만, 페이지를 새로 고치지 않고도 언어를 바로 전환할 수 있습니다.

아랍어 및 히브리어 사용자를 위해 적절한 오른쪽에서 왼쪽으로(RTL) 지원 기능을 내장했습니다.
가장 좋은 점은? 커뮤니티가 명확한 기여 가이드라인을 통해 추가 언어를 쉽게 기여할 수 있도록 했다는 것입니다. 이는 Airflow의 글로벌 확장의 시작일 뿐입니다.
나만의 방식으로 Airflow 를 구축하세요
새로운 React 플러그인 시스템 ( AIP-68 )은 Airflow 인터페이스를 확장하는 방식을 혁신합니다. 기존의 Flask 기반 접근 방식을 팀의 작업 방식에 맞춰 Airflow를 맞춤 설정할 수 있는 최신 툴킷으로 대체했습니다.
회사 대시보드를 Airflow UI에 바로 내장하고 싶으신가요? Airflow의 탐색 모음, 대시보드, 세부 정보 페이지 등 내부에서 렌더링되는 React 애플리케이션이나 iframe을 구축해 보세요. 기존 도구에 원활하게 연결하고 싶으신가요? 리소스에 대한 사용자 지정 외부 링크를 생성해 보세요. Airflow의 API 서버를 확장하고 싶으신가요? 특정 프로세스에 맞는 FastAPI 하위 애플리케이션과 미들웨어를 등록해 보세요.
이 시스템에는 다음이 포함됩니다.
-
기존 도구에 연결하기 위한 외부 뷰 (외부 링크 또는 내장된 iframe)
-
외부 React 앱 렌더링을 위한 React 애플리케이션 지원
-
API 서버를 확장하기 위한 FastAPI 하위 애플리케이션
-
API 요청을 가로채기 위한 루트 미들웨어 (핵심 미들웨어 포함)
우리는 이미 팀이 위키피디아 검색부터 데이터 계통 시각화까지 모든 것을 통합하는 것을 보았습니다. 물론, 누군가가 뱀 사냥을 기다리는 동안 플레이할 뱀 게임을 만드는 것도 있습니다!
타마라 핑거린의 작품입니다.
향상된 개발자 및 작성 경험
태스크 SDK 진화
Airflow 3.1은 향상된 DAG 직렬화를 통해 Airflow Core에서 Task SDK 를 분리하는 과정을 더욱 발전시켰습니다 . 3.2.0에서는 완전한 분리가 이루어졌지만, 그 기반은 다음과 같습니다.
-
독립 업그레이드 : Dag 작성자와 Airflow Ops 팀 간의 조정 필요성 감소
-
상위 호환성 : Dag 작성자는 향후 호환성을 위해 airflow.sdk 네임스페이스 에서 Dags를 가져와서 작성해야 합니다 . (물론 기존 가져오기 방식도 여전히 작동하지만 경고가 발생합니다.)
-
배포 유연성 : 분리된 구성 요소 배포에 대한 더 나은 지원
Python 3.13 지원
Airflow 3.1.0은 Python 3.9(지원 종료)를 제거하고 Python 3.13을 지원합니다. 이제 플랫폼은 Python 3.10, 3.11, 3.12, 3.13을 지원합니다.
추론 실행
새로운 스트리밍 API 엔드포인트( /dags/{dag_id}/dagRuns/{dag_run_id}/wait)를 사용하면 애플리케이션이 DAG 실행이 완료될 때까지 감시할 수 있으므로 실시간 워크플로에 대한 반응형 통합 패턴이 가능합니다.
아래 예제는 httpxdag 실행을 트리거하는 데 사용되며, 실행이 완료된 후 최종 dag 실행 상태를 내보냅니다.
import asyncio
import json
import httpx
dag_id = "my-dag"
async def create_and_wait(client):
# Create a dag run...
r = await client.post(f"https://my-airflow.example.com/api/v2/dags/{dag_id}/dagRuns")
run_id = r.json()["dag_run_id"]
async with client.stream(
"GET",
f"https://my-airflow.example.com/api/v2/dags/{dag_id}/dagRuns/{run_id}/wait",
) as r:
async for line in r.aiter_lines():
pass # You can do progress report here instead.
print("Dag run state:", json.loads(line.strip())["state"])
async def main():
async with httpx.AsyncClient() as client:
await create_and_wait(client)
asyncio.run(main())
놀라운 커뮤니티
Apache Airflow 3.1.0은 1,400개 이상의 커밋을 통해 163명의 기여자가 이 릴리스를 가능하게 한 , 이 프로젝트를 추진하는 활기찬 생태계를 보여주는 놀라운 커뮤니티 노력을 보여줍니다 .
주요 기여자
이 릴리스를 추진한 상위 20명의 기여자에게 특별히 감사드립니다: Amogh Desai , Ash Berlin-Taylor , Brent Bovenzi , Bugra Ozturk , Daniel Standish , Elad Kalif , Ephraim Anierobi , GPK , Guan Ming (Wesley) Chiu , Jarek Potiuk , Jens Scheffler , Karthikeyan Singaravelan , Kaxil Naik , LI,JHE-CHEN , Pierre Jeambrun , Shahar Epstein , Tzu-ping Chung , Vincent , Wei Lee , Yeonguk Choo .
143명의 추가 기여자 모두 보기
1in3x, Aaron Chen, Aayush Bisen, Abhishek, Achim Gädke, Aldo, Alex Neal Albinda, Alyssa Mhie M. Matila, Anand Raman, Andrei Serdiukov, Ankit Chaurasia, Antony Southworth, Aritra Basu, Aryan Khurana, Atul Singh, Azis, BBQing, Bjorn Olsen, Bowrna, Brunda10, Carl Leake, Chang-Yen (Brian) Li, Christos Bisias, Collin McNulty, Constance Martineau, D. Ferruzzi, DHARMENDRA AHIRWAR, Damian Shaw, Daniel Wolf, David Blain, Denis Krivenko, Dev-iL, Dheeraj Turaga, Diogo Rodrigues, Domadelfin, Dov Benyomin Sohacheski, Duc Nguyen, Evgenii Prusov, Farhan, Fortytwo, Gabriel TOUZALIN, Gajo Petrovic, Gary Hsu, Glenn Schuurman, Guangyang Li, Gwak Beomgyu, Hoyeop Lee, Hussein Awala, Isaiah Iruoha, Ivan, Jake Roach, James Hyphen, Jason, Jason Brownstein, Jed Cunningham, Jeongseok Kang, John Bampton, Josef Šimánek, Josué Velázquez Gen, João Ramiro, Kacper Muda, Kalyan R, Karan Anand, Karen Braganza, Karthik S, Kavya Katal, Ken Lewerentz, Kevin Liu, Kevin Yang, Kiran R, Kiruban Kamaraj, Kosteev Eugene, Kumbha Lakshmi Narayana, Kyungjun Lee, LIU ZHE YOU, Lipu Fei, Maciej Obuchowski, Maksim, Mike Lay, Mikhail Dengin, Minkyu Kim, N R Navaneet, NOEUN KIM, Naseem Shah, Nataneljpwd, Niko Oliveira, Nithin U, Nitochkin, Olivier, Owen Leung, Paolo Facchinetti, Pedro Leal, Pratiksha, Przemysław Mirowski, Qiang-Liu, Rahul Vats, Ramit Kataria, Sam Wheating, Sean Ghaeli, Sean Rose, Sebastián Ortega, Seongho Kim, SeungMin, Shlomit-B, Shubham Raj, Sneha Prabhu, Stanley Law, Stephan, Steve Ahn, Valentyn, Vic Wen, Vincent Kling, VladaZakharova, Wei-Yu Chen, Wonseok Yang, Xch1, Xiaodong DENG, Y. SOMDA, Yann Lambret, Yannick Suter, Yeonguk, Yiming Peng, Yusin, Zach, Zach Liu, Zhen-Lun (Kevin) Hong, anasatzemoso, ayush3singh, codecae, davidfgcorreia, dominikhei, ecodina, fuatcakici, humit, magic_frog, majorosdonat, mandeepzemo, oboki, olegkachur-e, pawelgrochowicz, roach231428, shreyaskj-0710, sujitha-saranam, suman-himanshu, vikrantkumar-max, yangyulely, 코딩하는펭귄.
UI 우수성 및 커뮤니티 성장
UI 기여의 놀라운 성장( Airflow 2.10보다 5배, Airflow 3.0보다 50% 더 많은 풀 리퀘스트 )은 UI 유지 관리자의 헌신적인 노력과 이번 릴리스의 초석으로 사용자 경험을 만들어낸 70명의 프런트엔드 기여자 커뮤니티의 확장을 반영합니다.
글로벌 협업
국제화 노력은 전 세계의 기여자들을 대표하며, Airflow를 17개 언어 와 다양한 기술 커뮤니티에서 실제로 접근할 수 있게 함으로써 Airflow 프로젝트가 실제로 글로벌한 성격을 가지고 있음을 보여줍니다.
Apache Airflow는 커뮤니티 주도 프로젝트입니다. 코드, 문서, 테스트, 피드백을 통해 이 릴리스를 가능하게 해주신 모든 기여자분들께 특별히 감사드립니다. 워크플로 오케스트레이션의 미래는 함께 만들어갑니다.
마이그레이션 및 업그레이드 참고 사항
-
Python 지원 : 업그레이드하기 전에 Python 3.10 이상을 실행 중인지 확인하세요. Python 코어 팀의 성능 향상을 위해 최소 Python 3.12를 권장합니다. 3.13을 사용할 수 있다면 더욱 좋습니다!
-
공급자 업데이트 : 새로운 기능을 활용하려면 최신 공급자 패키지로 업데이트하세요.
-
주요 변경 사항 : Airflow 2.x에서 직접 업그레이드하는 경우 구성 변경 사항 및 제거된 기능에 대한 마이그레이션 가이드를 검토하세요.
참여하세요
-
릴리스를 시도해 보세요 : 개발 환경을 업그레이드하고 새로운 기능을 탐색해 보세요
-
대화에 참여하세요 : ( Airflow Slack ) 및 ( 개발자 메일링 목록 ) 에서 저희와 소통하세요.
-
기여하기 : 기여 가이드를 확인하세요 .
-
피드백 제공 : GitHub( https://github.com/apache/airflow ) 에서 귀하의 경험과 제안을 공유하세요.
Apache Airflow 3.1.0은 데이터 오케스트레이션을 더욱 포용적이고 지능적이며 인간 중심적으로 만드는 새로운 장을 엽니다. 여러분이 이 버전으로 무엇을 만들어낼지 기대됩니다!
본 글은 Apache Airflow 블로그 글을 GPT 모델을 활용하여 번역한 내용입니다. 따라서 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다.
관심있는 내용이시라면 원문도 함께 참고해주세요! https://airflow.apache.org/blog/
읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시면 감사드리겠습니다.

