Airflow 3.0のリリースとその主要な新機能、開発背景、今後について紹介。
2024年9月のAirflow Summitで、Airflowプロジェクトの次なる大きなマイルストーンとして「Apache Airflow 3.0®」に注力することを発表しました。そしてこの度、Airflow 3.0が正式にリリースされました!
Airflow 3.0はAirflow史上最大のリリースです。2.0は2020年に登場し、その後は四半期ごとにアップデートを重ね、2024年第4四半期にはバージョン2.10がリリースされました。2020年から月間ダウンロード数は30倍以上増加し3,000万、導入組織も25,000から80,000へと急成長しています。
この4年間でAirflowは、あらゆる規模の組織でビジネスクリティカルなデータワークフローを担うまでに成長しました。もともとはETL/ELT/Reverse ETL用途から始まりましたが、現在はAirflowユーザーの30%超がMLOps、10%が生成AIワークフローで活用しています。Airflow 3はこのユースケース拡大に応え、データアプリケーション開発の業界標準となります。
主なハイライトは以下の通りです:
これらは300人超の開発者たちの長期間にわたる努力の結晶です。より詳細なリリース内容を以下でご紹介します。
DAGバージョニングは年次アンケートでもっとも要望の多かった機能です。Airflow 3では、DAG実行開始時のバージョンで最後まで完了し、実行途中で新バージョンがアップロードされても影響を受けません。全てのDAGランは各バージョンごとにUIで可視化でき、タスク構成・コード・ログ等も紐付いて管理されます。AIP-65、AIP-66で詳細が説明されています。
長年要望されてきたBackfillの強化にも対応。機械学習に限らずETL/ELTでもBackfillは必要であり、Airflow 3ではスケジューラ内で実行・制御され、スケーラビリティや診断性が向上。UI/APIから起動・監視ができます。詳細はAIP-78で定義されています。
Airflow 3の大きな目標は、どんな環境・言語でもタスク実行を可能にすることです。Task Execution Interface (AIP-72) の導入でAirflowはクライアント/サーバー型アーキテクチャへと進化。Celery、Kubernetes、ローカル実行だけでなく、マルチクラウド・多言語対応が可能になりました。Python TaskSDKで既存DAGも後方互換を保証し、今後はGolang等他言語SDKも提供予定です。
エッジデバイス上でのパイプライン実行を想定したEdge Executor (AIP-69)もプロバイダパッケージとして利用可能になりました。
Airflow 3は外部イベントや外部データシステムによるアセット更新にも迅速に対応するための基礎機能を提供します。これは、データセットをデータアセットへ進化させる形で実現。AIP-74 で概念が定義され、新しいアセット中心構文(AIP-75)でDAGデコレーターからアセット定義もより簡単になりました。
外部イベント駆動スケジューリング(AIP-82)も対応し、AWS SQSの標準連携例も含まれます。
多くのML/AIエンジニアがモデル学習等にAirflowを利用していますが、推論用途には課題がありました。データインターバルに依存しないDAGでの推論実行も対応し、AIP-83 で変更されています。
Airflow 3でUIを完全にReact + FastAPIベースへ刷新し、アセット指向とタスク指向を融合したUXを提供。グリッドビュー・グラフビューも統合され、開発者は好きな形でDAGを記述できます。公式ドキュメントのスクリーンショットも必見です。
UIを支えるREST APIや内部APIはFastAPIに統一され、Task Execution frameworkの一部を構成します。ユーザー体験設計はAIP-38を参照してください。
また、Flask AppBuilderをCoreパッケージから分離し、プロバイダパッケージ化によるセキュリティ・保守性も強化しました(AIP-79)。
Task Execution InterfaceとAPIサーバでタスクを隔離し、マルチチーム利用時の安全性を大幅に向上させました。CLIもAirflow API経由での操作を推進し、ローカル開発用/リモート用CLIを分離。後者は新プロバイダパッケージ「airflowctl」で提供されます (AIP-81)。
本リリースはAIP推進の多くの技術リーダー、協力者のインスピレーションと努力のおかげです。Ash Berlin-Taylor、Brent Bovenzi、Bugra Ozturk、Constance Martineau、Daniel Standish、Jed Cunningham、Jens Scheffler、Kaxil Naik、Pierre Jeambrun、Vincent Beck、Vikram Koka、Jarek Potiuk、Elad Kalif、Wei Lee、Ankit Chaurasia ほか全員に感謝します。
特にJed CunninghamとKaxil Naikのリリース管理にも大きな賛辞を贈ります!
世界中の300名以上の開発者が本リリースに貢献してくれました。全員の貢献に感謝します(名前はアルファベット順で掲載しています)。
(開発者リストは原文をご参照ください)
皆さまからのフィードバックをお待ちしています。ぜひ新バージョンをお試しいただき、課題報告やPR、Slackやdevリスト、GitHubでの議論に参加ください。共に“データオーケストレーションの未来”を創っていきましょう!