C.W.K.
Stream
Lesson 05 of 05 · published

Choosing — The Practical Decision Framework

~10 min · orchestration, decision

Level 0Curious Reader
0 XP0/47 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

The honest comparison

None of the three is universally better. Pick based on team shape and constraints, not on Twitter discourse. Here's the working table.

AirflowDagsterPrefect
Mental modelTasks → DAGAssets → graph emergesFunctions → flows
Deployment costHigh (DB + scheduler + workers + webserver)Low (single process to start)Lowest (single process; Cloud option)
Ecosystem of operatorsLargest (1,500+)MediumMedium
Best for teams that…Already have ops; need many integrationsThink in data assets and want lineage front-and-centerWant orchestration that feels like a Python library
Async / concurrency storyFineGoodBest (native async)
UI maturityMature, denseModern, lineage-firstModern, flow-first
Learning curveSteepMediumGentle

The defaults I actually recommend

  • Small/new team, starting from zero: Dagster. The asset model maps to how data teams already think, and the deployment story is the gentlest of the three.
  • Big team with existing infrastructure and many vendor integrations: Airflow. The ecosystem advantage is real.
  • Engineering team that wants orchestration to feel like a library, not a platform: Prefect. The hybrid execution model is a real advantage for regulated/security-sensitive shops.

And one important non-answer: don't agonize over the choice. All three are good enough that you'll get most of the value from any of them. The discipline of writing pipelines as DAGs/assets/flows is what makes the work better — the specific tool is the smaller decision.

Code

Same pipeline, three frameworks — pick the one that matches your team·text
Airflow:   @dag → @task functions → DAG file in dags/
Dagster:   @asset functions → repository → dagster dev
Prefect:   @flow + @task functions → python flow.py

All three give you: scheduling, retries, UI, run history, alerting, backfills.
Pick based on team shape, not benchmarks. The decision will not haunt you.

External links

Exercise

Pick one of the three frameworks (Dagster is the gentlest place to start). Build a working three-task pipeline that extracts, transforms, and loads any small dataset. Schedule it. Make it fail on purpose, watch the retry happen, then fix it. The goal is not to ship a production pipeline — it's to feel the loop.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.