Cover image for Databricks Workflows vs Airflow vs Dagster: Picking an Orchestrator

Zephico Technologies

Every data team eventually asks the same question: what runs our pipelines, on what schedule, with what retry logic, and who gets paged when it fails. The answer used to default to Airflow because there wasn't a real alternative. Now there are three reasonable defaults, and they optimize for different things. Picking wrong doesn't break anything on day one — it shows up eighteen months later as either an operations team drowning in scheduler maintenance or an engineering team fighting a platform that won't do what they need it to.

Here's the actual tradeoff, not the vendor pitch version.

Databricks Workflows: the path of least resistance, if you're all-in on Databricks

Databricks Workflows is the orchestrator built into the platform. Jobs, clusters, Unity Catalog permissions, and Workflows all share the same control plane, which means you're not maintaining a separate scheduler, not managing a second set of credentials, and not debugging why an external system can't see a table that Unity Catalog says it can. Task dependencies, retries, cluster reuse across tasks, and job-level alerting all come for free.

The cost is exactly what you'd expect from a platform-native tool: it orchestrates Databricks well and everything else poorly. There's no first-class way to trigger a task in your orchestration DAG that waits on a Salesforce export, calls an internal API, or coordinates a dbt run against a warehouse that isn't Databricks SQL. You can bolt these in with webhooks and external scripts, but you're fighting the tool rather than using it. Workflows also doesn't give you the asset-lineage or testing story that Dagster does — it schedules tasks, not data assets.

If your data platform genuinely is Databricks end to end — ingestion, transformation, ML, serving — Workflows removes an entire category of operational overhead you'd otherwise be paying for nothing. Teams in this position who reach for Airflow anyway usually do it out of habit, not need, and end up running two schedulers where one would do.

Airflow: the incumbent, and the bill that comes with it

Airflow's argument is maturity and reach. It has the largest operator ecosystem of any orchestrator, a decade of production hardening, and a hiring pool that already knows it. If your pipelines touch a dozen systems — a couple of warehouses, three SaaS APIs, an on-prem database, a message queue, and Databricks somewhere in the mix — Airflow (or something with equivalent breadth) is close to mandatory, because it's the only one built from the ground up to sit above heterogeneous systems rather than inside one of them.

What Airflow charges you for that breadth is operational weight. Self-hosted, you're running a scheduler, a metadata database, a web server, and workers, and you own upgrades, DAG-parsing performance as the DAG count grows, and the sharp edges around task isolation. Managed options — MWAA on AWS, Astronomer, Google's Cloud Composer — remove the infrastructure burden but add real cost and still leave you managing DAG deployment and dependency versioning yourself. Airflow's execution model is also fundamentally task-centric: it knows a task ran, not what data it produced or whether that data is fresh, valid, or the same asset another DAG also writes to. Teams that want a data-asset-first mental model layer tools like dbt or add asset-check conventions on top to compensate.

Airflow 3 narrowed some of these gaps — better task isolation, some asset-aware scheduling — but the operational model is still: you run this, or you pay someone to run it for you.

Dagster: asset-based thinking, at the cost of ecosystem size

Dagster starts from a different premise: instead of orchestrating tasks, you declare the data assets your pipeline produces and the dependencies between them (software-defined assets). The scheduler then figures out the DAG from the asset graph. In practice this means significantly better local development — you can materialize a single asset, mock inputs, and test it in isolation without spinning up the whole pipeline — and lineage that's a natural byproduct of how you define pipelines rather than something you bolt on afterward. For teams that have been burned by Airflow DAGs that pass silently but produce garbage data, Dagster's typed I/O and asset-check model is a meaningful upgrade in confidence.

The tradeoff is ecosystem size. Dagster's integration library is smaller than Airflow's, the community and hiring pool are both younger, and if you need an obscure operator for a legacy system, you're more likely to be writing it yourself than pulling it off the shelf. Dagster also orchestrates across heterogeneous systems fine — it's not Databricks-specific — but you're trading Airflow's breadth for a better development model, not getting both for free.

The real decision framework

Ignore the marketing angle from each vendor and the decision comes down to two questions: how much of your stack lives outside Databricks, and how much do you value asset-centric thinking and local testability over ecosystem breadth.

  • Single-platform-on-Databricks shop, most pipelines are notebooks and Databricks jobs. Use Workflows. You'll be maintaining fewer systems and every feature you'd otherwise build (retries, alerting, cluster lifecycle) is already there.
  • Orchestrating across many heterogeneous systems — multiple warehouses, SaaS APIs, on-prem systems, Databricks as one node among several — Airflow's breadth usually wins, especially if your team already knows it or you're prepared to pay for a managed instance.
  • Same heterogeneous situation, but you're building new and value strong typing, asset lineage, and a real local dev/test loop over ecosystem size — Dagster deserves a serious evaluation, particularly for greenfield platforms where you're not migrating years of existing DAGs.

The honest answer really is "it depends on your existing stack," and any framework that skips that and hands you one universal answer is selling something. The one mistake we see repeatedly is teams running Airflow purely to orchestrate Databricks jobs, paying the full operational cost of a general-purpose scheduler to do a job Workflows does natively — that's worth a hard look before you commit to a migration or a managed Airflow contract.

If you're mid-evaluation and want a second opinion on which of these fits your actual pipeline mix, our Databricks data engineering team has built and migrated orchestration on all three. Get in touch and we'll walk through your stack with you.


Originally published on the Zephico blog.