What You’ll Master Here
A scheduler answers “what time is it?”. An orchestrator answers “what is safe to run now?”. Every feature in Airflow — dependencies, retries, backfills, pools, sensors — is a different way of answering that second question.
Almost every data engineer meets orchestration the same way: a script that works, copied into crontab, and then a second script that has to run after the first one. That second script is where the whole discipline begins.
This chapter never opens a DAG file. Its job is to make you able to answer one question precisely — what does an orchestrator do that a scheduler cannot? — because everything in the rest of this knowledge base is a detail of that answer. Step through the three moves below before reading on.
A scheduler answers “what time is it?”. An orchestrator answers “what is safe to run now?”. Every feature in Airflow — dependencies, retries, backfills, pools, sensors — is a different way of answering that second question.
Engineers who learn Airflow as a list of features end up writing DAGs that are really crontabs with extra syntax: no real dependencies, retries copy-pasted into every script, tasks that break when re-run. Engineers who learn the problem first write DAGs that survive a bad night. The gap between those two people is visible in an interview within about ninety seconds.
- Scheduler
- Something that starts a job when the clock reaches a given time. Cron is the canonical example. It knows nothing about outcomes.
- Orchestrator
- Something that starts a job when its preconditions are satisfied, tracks the outcome, retries on failure, and keeps a queryable history of every run.
- DAG
- Directed acyclic graph — the shape of a workflow. Directed because work flows one way; acyclic because a step must not be able to wait on itself.
- Control plane
- The layer that decides what runs and when, as opposed to the data plane, where the data is actually stored and processed. An orchestrator is a control plane.
Learning Airflow as syntax before understanding the problem. You produce DAGs that reimplement cron — hardcoded sleeps, one giant task, retry loops inside the Python — and inherit every failure mode Airflow was built to remove.
Be able to state, in one sentence, what an orchestrator gives you that a scheduler does not. If you cannot, no amount of operator trivia will cover for it.
When you meet a new orchestration feature, ask which failure it exists to prevent. Features without a failure attached are usually features you do not need yet.
Treat “the job succeeded” and “the data is correct” as two separate claims. Most expensive incidents live in the gap between them.
Time is a bad proxy for readiness. Every orchestration concept in this knowledge base exists because someone used the clock to approximate a dependency and got away with it right up until the night they did not.
You are not here to learn a scheduler with better syntax. You are here to learn how to stop scheduling by hope.
