Data Orchestration Tools

How to Choose in 2026

Tool details come from each project's documentation as read on 2026-11-03.

Last updated: Proudly published by: Jeff Wahl13 min read

What are data orchestration tools?

Data orchestration tools run the steps of a data pipeline in the right order, start them on a schedule or when an event arrives, retry the ones that fail and keep a record of every run. They decide when work happens. The work itself, such as a SQL transformation or a Spark job, runs in another system.

That split is the reason the category exists. A cron job can start a script at 02:00, but it can't wait for an upstream extract that finished late, rerun only the 3 steps that failed, or tell you which downstream table is now stale. An orchestrator keeps the dependency graph and the run history, so those questions have answers.

The tools differ on 4 things worth comparing before any feature list: what the graph is made of, how a pipeline is written, where the work runs, and who operates the control plane. Workflow orchestration tools for data pipelines look alike on a feature page and feel different in the second month, and these 4 are where the difference comes from.

Prepare for the interview
01 / Open invite
02min.

Know Data Orchestration Tools the way the interviewer who asks it knows it.

a Data Orchestration Tools query, the same shape a screen would give you.
The diff against expected. Where ties broke. What you missed.
sandbox
1source → bronze → silver → gold
2 ingest : CDC + Kafka
3 transform : dbt + Airflow
4 serve : Snowflake
5
Execute your solution0.4s avg.
Goldman SachsInterview question
Solve a Data Orchestration Tools problem

What an orchestrator does and what it leaves to other engines

An orchestrator sits beside the data, not in it. It sends a start signal to each engine, watches for the result and decides what runs next. Rows move between the engines, never through the orchestrator.

An orchestrator on the left sends a start signal to 4 engines on the right, a warehouse, Spark, dbt and a container, and receives a status back from each; rows move between the engines, not through the orchestratorAn orchestrator on the left sends a start signal to 4 engines on the right, a warehouse, Spark, dbt and a container, and receives a status back from each; rows move between the engines, not through the orchestrator

This is why orchestrators stay small even for large pipelines: a job that scans terabytes in a warehouse costs the orchestrator the same as a job that scans 1 row. It also sets the boundary for the tool choice. If a step needs transformation logic, that belongs in an engine, and the orchestrator is judged on how well it launches that engine and retries and watches it.

Task-centric vs asset-centric orchestration

The first choice is what the graph describes. A task-centric orchestrator models the steps: run this extract, then this load, then this check. An asset-centric orchestrator models the things the steps produce: this table exists, this file is current, and the system works out which code must run to make them so.

Dagster is built on the second view. Its documentation defines an asset as an object in persistent storage, such as a table or file, or a persisted machine learning model, and materializing an asset as running its function and saving the result. Dependencies live between assets, so the lineage graph and the run graph are the same graph.

Airflow began on the first view and now reaches toward the second. A task declares the asset it updates in outlets, and a Dag declares the assets it waits for in schedule. Per the Airflow asset scheduling documentation, a Dag scheduled on a list of assets runs after every listed asset has updated since its last run, and an asset counts as updated only when its task succeeds. Asset-based scheduling is one of the headline areas of the Airflow 3.0 release.

Neither view is more correct. Task-centric graphs fit pipelines whose steps don't produce a named dataset, such as calling an API or starting a cluster. Asset-centric graphs fit pipelines whose steps are mostly the construction of tables and files, where the useful question is whether this table is current and what is downstream of it.

Airflow, Dagster, Prefect and Kestra side by side

Airflow
  • Unit you scheduleTask in a Dag
  • Defined inPython
  • LicenceApache 2.0
  • Event triggersAsset events
  • Managed optionMWAA, Composer
Dagster
  • Unit you scheduleAsset
  • Defined inPython
  • LicenceApache 2.0
  • Event triggersSensors
  • Managed optionDagster+
Prefect
  • Unit you scheduleFlow and tasks
  • Defined inPython
  • LicenceApache 2.0
  • Event triggersEvents, automations
  • Managed optionPrefect Cloud
Kestra
  • Unit you scheduleFlow of tasks
  • Defined inYAML
  • LicenceApache 2.0
  • Event triggersEvent-driven flows
  • Managed optionEnterprise Edition

Apache Airflow: the broadest ecosystem

Airflow describes itself as an open-source platform for developing workflows in Python and monitoring their scheduled runs, and its documentation calls it a platform for orchestrating batch workflows. Its 3.0 release came on 2025-04-22, and its release notes list 3.3.2 as the newest version, from 2026-09-17.

Airflow 3 changed its internals. A Dag processor parses Dag files and serializes them into the metadata database. An API server serves the REST API and the interface, and tasks report state through it instead of reaching the database directly. Airflow needs a scheduler, a Dag processor, an API server and a metadata database on PostgreSQL or MySQL; workers and a triggerer are optional. Knowing that list matters when you run it yourself, because each one is a component to size and upgrade, and one more thing to monitor.

Airflow fits when the pipeline touches many different systems. Its provider packages cover a long list of services, so a team that moves data between a warehouse and object storage, or from SaaS APIs into a cluster, usually finds an operator for each. It also fits when a managed option matters, because Amazon and Google both run it as a service.

It fits less well when most of the graph is tables a team wants to inspect by name, or when a team wants pipelines defined in something lighter than a Dag file. For the mechanics, see what an Airflow DAG is and how it runs, and for the questions interviewers ask about it, the Airflow interview questions.

Dagster: when the pipeline is a set of tables and files

Dagster calls itself a data orchestrator built for data engineers, with lineage, observability, a declarative programming model and testability built in. Its repository describes it as an orchestration platform for developing and observing data assets in production, and it is released under the Apache 2.0 licence.

Because the unit is the asset, the questions an on-call engineer asks are first-class screens: which assets are stale, which run produced this table, and which assets sit downstream of the one that broke. A pipeline is written as Python functions marked as assets, with dependencies declared between them, so a small pipeline is a small file.

Dagster fits when the pipeline is mostly the construction of datasets, when a team wants checks and lineage attached to the same objects the schedule builds, and when engineers want to run and test pipeline code locally as ordinary Python. Dagster+ is the vendor's managed offering with a hosted Dagster instance. It fits less well for orchestration that is mostly steps with no dataset to point at, where modelling everything as an asset adds ceremony.

Prefect: plain Python with flexible execution

Prefect 3 describes itself as an open-source orchestration engine that turns Python functions into production-grade data pipelines. Flows and tasks are ordinary functions with decorators, and there is no DSL or YAML to learn. Prefect 2.0 removed the requirement that a workflow be an explicit DAG, so dynamic fan-out and other loops or branches are written as normal Python control flow.

Its execution model is the part that most often decides the choice. A work pool is the bridge between the orchestration layer and the infrastructure where flows run. In the hybrid model you run a worker in your own environment that polls the pool and submits runs to your infrastructure. Flow code and data stay on your side. Push pools hand runs directly to a serverless provider such as AWS ECS or Google Cloud Run with no worker, and managed pools run on Prefect's own infrastructure.

Prefect fits when a team wants to turn existing Python scripts into monitored, retried, scheduled pipelines with the least rewriting, and when runs must start in different kinds of infrastructure. Prefect 3.0 also open-sourced the events and automations backend, so a run can start from an external event, not only a clock. It fits less well when a team wants every system it touches to come with a ready-made operator, since the unit of work is a Python function you write.

Kestra: declarative flows in YAML

Kestra describes itself as an open-source orchestration platform, and its repository calls it an event-driven platform with declarative YAML flows. A flow is a YAML document with an id and a namespace, followed by a list of tasks, each task naming a plugin type. The same flow can be edited as YAML, in a no-code editor or with an AI assistant, and every editor changes the same document.

The trade is clear. A flow is easy to read for someone who does not write Python, and it can sit in Git beside infrastructure definitions. The cost is that logic that is natural in a language, such as loops with computed inputs or shared helper functions, has to be expressed through the plugin vocabulary. Kestra is released under the Apache 2.0 licence, and an Enterprise Edition adds access control and policies, and separate worker groups.

Kestra fits when pipeline owners include analysts and platform engineers who read YAML more comfortably than Python. It also fits when the same orchestrator has to schedule non-data work, such as infrastructure tasks or business processes. It fits less well for teams whose pipeline logic is mostly Python that they want to unit test as code.

Step Functions, Argo Workflows and Lakeflow Jobs

Some orchestrators belong to the platform where the work already runs. AWS Step Functions models a workflow as a state machine whose steps are states, and it calls AWS services directly, including Glue, EMR, Athena and Lambda. A Standard workflow gives exactly-once execution, can run for up to 1 year and is priced by state transition. An Express workflow is built for high event rates, gives at-least-once execution, runs for up to 5 minutes and is priced by executions and duration. The Step Functions documentation lists both limits.

Argo Workflows is a container-native workflow engine for orchestrating parallel jobs on Kubernetes, implemented as a Kubernetes custom resource, with each step a container and the workflow declared as a DAG or as steps. It is a graduated project of the Cloud Native Computing Foundation. It fits teams that already run Kubernetes and want pipelines to be Kubernetes objects.

Lakeflow Jobs is workflow automation inside Databricks. A job coordinates tasks, which can be notebooks and pipelines as well as Python scripts, supports if/else branching and for-each loops, starts on a schedule or when new data arrives in cloud storage, and can include dbt. The documentation sets a limit of 1,000 tasks per job and 2,000 concurrent task runs per workspace.

These 3 share a trade. Inside their own platform they need almost no setup, with no scheduler to host and native access to the platform's identity and logging. Outside it they get awkward, because a pipeline that spans a warehouse and a SaaS API, and another cloud besides, has to cross the platform boundary in every step. They fit when most of the work lives in 1 platform, and a general-purpose orchestrator is the better pick when it does not.

Managed vs self-hosted orchestration

The operating model matters as much as the tool. Self-hosting an orchestrator means running its scheduler and workers against a metadata database, and being on call for all of it, upgrades included. For a small team the orchestrator can become a second system to run beside the pipelines it schedules.

Managed services remove most of that. Amazon MWAA runs Airflow, so you don't manage or secure the infrastructure behind its scalability and availability. The scheduler and workers run as Fargate containers, and AWS manages the metadata database. Google's managed Airflow service, Cloud Composer, provisions an environment on Google Kubernetes Engine with the web server and the metadata database, plus a Cloud Storage bucket for Dag files and logs. Dagster+, Prefect Cloud and Kestra's Enterprise Edition give the same relief for their own tools.

The cost of managed is lag and control: a managed service offers the versions its provider has released, with its own limits on configuration and networking. A team with strict network isolation or custom plugins, or one that needs to upgrade on its own schedule, may still choose to host, and a team with 2 engineers and 40 pipelines usually should not.

Which orchestration tool fits which situation

Your situationTools that fit itWhy
Pipelines cross many systems and several teams share 1 schedulerAirflow, managed or self-hostedProvider packages cover many services, and Amazon and Google both host it
Most of the pipeline builds tables and files you want to inspect by nameDagster, or Airflow with assetsThe graph is made of the datasets, so lineage, staleness and rebuilds follow from the definitions
You have Python scripts and want retries, schedules and visibility with little rewritingPrefectDecorated functions are the pipeline, and work pools choose where each run executes
Pipeline owners are more comfortable with YAML than PythonKestraFlows are declarative documents that read well and live in Git
Nearly all the work runs on 1 cloudStep Functions on AWS, or that cloud's managed AirflowNative integrations and identity remove a scheduler to host
You already run Kubernetes and want pipelines as Kubernetes objectsArgo WorkflowsEach step is a container and the workflow is a custom resource
Nearly all the work runs in DatabricksLakeflow JobsTasks, triggers and the engine share 1 workspace
A 2 person team that cannot staff another systemA managed service of any of the aboveThe scheduler, database and upgrades become the provider's problem

How to choose a workflow orchestration tool for your data pipelines

Searches for the best orchestration tool for data pipelines expect 1 answer, but the answer depends on 4 questions. Each one rules tools out before any feature comparison.

The first question is what the graph is made of. Mostly tasks across many systems points to Airflow or Prefect, or to Kestra. Mostly tables and files points to Dagster, or to Airflow's asset scheduling. The second is where the work runs: one platform points to that platform's engine, and many systems point to a general-purpose tool. Who writes and reads the pipelines comes next. Python-first engineers suit Airflow and Dagster, and Prefect too, while YAML-first owners suit Kestra. Last, who operates it? A team that cannot staff the control plane should price the managed option for any tool before comparing them.

Then test the shortlist against your worst pipeline, not the tutorial one. Write the pipeline with the longest dependency chain and the most awkward trigger in each candidate, rerun a failed middle step, and backfill a month of history. The tool that makes those 3 jobs plain is the one your team will still like in the second month.

What orchestrators are not: dbt, streaming engines and ETL tools

An orchestrator does not transform data. dbt runs SQL transformations inside a warehouse in dependency order, so it covers the transform step and leaves ingestion and cross-system coordination to something else. The comparison is covered in dbt vs Airflow, and most teams run both: the orchestrator triggers dbt after the load finishes.

It is also not a streaming engine. Airflow's documentation describes it as a platform for orchestrating batch workflows, and continuous event processing belongs to a stream processor that keeps running. The orchestrator's job there is to deploy the stream job and watch it. The difference between the 2 models is laid out in batch vs streaming data pipelines.

And it isn't an ingestion or ETL product. Those tools move and reshape rows. The orchestrator decides when they run and what happens when they fail, which is why choosing an ETL tool is a different question from the one on this page.

How orchestration comes up in data engineering interviews

Interviewers rarely ask you to name the best tool. They ask how you would run a pipeline you designed: what triggers it, what happens when step 3 of 5 fails, how you rerun it without double counting, how you backfill 30 days, and how you know it is late before a stakeholder does. A strong answer names the tool you would use, states the trade you accepted, and says what would make you choose another.

That ground sits inside data pipeline interview questions, and you can design the pipelines yourself with the data pipeline practice problems. The design round puts orchestration in context: the system design round asks where scheduling and retries sit in the whole architecture, and where monitoring does.

Data orchestration tools FAQ

What is a data orchestration tool?+
A data orchestration tool runs the steps of a pipeline in order, either on a schedule or when an event arrives. It retries the steps that fail and records what happened. It decides when work runs and in what order. The work itself runs in other systems such as warehouses and containers, or on a Spark cluster.
What is the best orchestration tool for data pipelines?+
No tool is best in general. Airflow fits teams that want the most provider integrations and a managed option on every major cloud. Dagster fits teams that think in tables and files and want lineage and checks attached to them. Prefect fits teams that want plain Python and flexible execution. Kestra fits teams that prefer declarative YAML. The cloud workflow engines fit work that lives mostly inside one platform.
What is the difference between workflow orchestration and ETL?+
ETL moves data from sources to a target and transforms it on the way. Workflow orchestration is the layer that decides when those steps run and in what order; it also retries failures and reports on them. An orchestrator calls the engines that do the ETL, so the 2 are used together.
Is Airflow still used in 2026?+
Yes. Apache Airflow 3.0.0 was released on 2025-04-22, and its release notes list 3.3.2 as the newest release, from 2026-09-17. Amazon MWAA and Google's managed Airflow service both run it, and Google's service supports Airflow 2 and Airflow 3.
Do I need an orchestrator if I use dbt?+
dbt runs the SQL transformations inside a warehouse in dependency order, but it doesn't ingest data or coordinate work across other systems. Teams add an orchestrator when a run must wait for an extract, trigger a downstream job, or tie several tools together into 1 schedule.
Can an orchestrator handle streaming data?+
Not as its main job. Airflow's own documentation describes it as a platform for orchestrating batch workflows. A streaming engine keeps running and processes events continuously, and an orchestrator typically deploys and monitors such jobs without sitting in the data path.
Which orchestration tools are open source?+
Airflow, Dagster, Prefect, Kestra and Argo Workflows are all open source. Dagster and Prefect publish their core under the Apache 2.0 licence, and Kestra does too. Argo Workflows is a graduated project of the Cloud Native Computing Foundation. Step Functions and Lakeflow Jobs are services of their platforms and are not open source.
How do I choose between Airflow and Dagster?+
Choose by what your team wants the graph to be made of. Airflow schedules tasks and has added assets as a trigger, so it suits teams whose pipelines are many different kinds of task across many systems. Dagster is built around assets, so it suits teams whose pipelines are mostly tables and files they want to check and rebuild by name.
02 / Why practice

The candidate who gets the offer

  1. 01

    Reading a solution is not the same as writing one

    Every engineer who has frozen on a query they had read a dozen times knows the gap. The only preparation that closes it is producing the answer yourself, under time, before the interview does it for you

  2. 02

    76% of hiring managers reject on the coding task, not the resume

    From HackerRank's 2024 Developer Skills Report. Candidates who look strong on paper still fail the live screen if they haven't done timed, executable practice

  3. 03

    System design comes down to the calls you defend out loud

    Ingestion, batch vs streaming, the bronze/silver/gold layers, idempotency, backfill and replay. Sketching the pipeline and naming the failure modes is the signal, not the boxes

Related guides