The default for many production teams
Apache Airflow (3.3 as of August 2026) is the most-deployed orchestrator in the world. It originated at Airbnb in 2014, became an Apache top-level project in 2019, and powers production pipelines at Lyft, Stripe, Netflix, Spotify, and most every "data platform team" you've heard of. The model is the DAG — Directed Acyclic Graph — of tasks.
Airflow 3 is not a version you can skip past
Airflow 3.0 landed in April 2025, and it invalidated two things at once: the DAG files people had been copying around, and the deployment diagram in every blog post written before it. If you learned Airflow from 2.x material — and most material still on the internet is 2.x — this is the section that matters.
- DAG authoring moved to
airflow.sdk.from airflow.decorators import dag, taskstill works and emits a deprecation warning;from airflow.sdk import dag, taskis the stable interface now. Underneath, task execution became a client-server split, which is what makes non-Python task runtimes possible at all. - DAG versioning. A run finishes against the version of the DAG it started with. Editing a file mid-run no longer quietly rewrites what a running pipeline is doing — the single most-requested feature in the project's own survey.
- Datasets became Assets, and scheduling became event-driven. A DAG can now wake because an asset changed somewhere outside Airflow, not only because the clock moved.
- Removed outright: SubDAGs (use TaskGroups), SLAs (replaced by Deadline Alerts), the Sequential Executor, and the entire
execution_date/tomorrow_ds/yesterday_dsfamily of context variables.logical_dateis the survivor. - Defaults flipped:
catchup_by_defaultis nowFalse. Deploying a new DAG no longer sets off a stampede of historical runs the moment it is parsed.
The architectural pieces
- API server — serves the REST API and the rebuilt React UI. This is what used to be called the webserver.
- Scheduler — decides what is due and hands tasks to the executor.
- DAG processor — parses your DAG files and serializes them into the database. In Airflow 3 this is a required standalone process, not an optional split you turn on at scale.
- Metadata database — Postgres in production.
- Workers, and a triggerer for deferred tasks — optional, depending on which executor you pick.
That is one more mandatory moving part than Airflow 2 had. This is the friction Dagster and Prefect chip away at, and Airflow 3 widened rather than narrowed it — the trade is the same shape, just steeper. Airflow costs more to stand up than either competitor, and the ecosystem (80+ community-maintained provider packages, and the largest community in the category) is what buys it back.