SynfraCore
Synfracore
Start Learning
Navigation

Academies

Platform

RoadmapsLabsCertificationsInterviewPYQsAI AssistantCareer
Start Learning Free🗺️ Learning Roadmaps

Apache AirflowNotes

Key takeaways, tips, and important points to remember

✍️
Written by senior engineers. Reviewed for technical accuracy.· Updated 2025 · SynfraCore Apache Airflow Team
Expert Content

Apache Airflow — Key Takeaways

Airflow orchestrates other tools — it's not a data processing engine itself. Learning Airflow well assumes you already understand the actual tools your DAGs will call (Spark, SQL, APIs).
catchup=True (or leaving it at an old default) can trigger a large, unexpected wave of backfilled runs — explicitly setting catchup=False is the safer default for most new DAGs unless automatic backfilling is genuinely intended.
Idempotency is a core design requirement in Airflow specifically, not just general good practice — retries and manual re-runs are routine, expected operations, and a non-idempotent task silently produces incorrect results every time this normal re-execution happens.
XComs are for small metadata, never for passing actual datasets between tasks — write real data to storage and pass a reference via XCom instead.
mode="reschedule" on sensors avoids holding a worker slot for the entire wait duration — using default poke mode for a long wait is a real, common way to exhaust worker capacity.
Branching marks non-chosen paths as "skipped," which interacts non-obviously with downstream trigger rulesnone_failed is often what's actually needed downstream of a branch point, not the default all_success.
Dynamic task mapping generates tasks based on runtime data, a meaningfully more flexible pattern than a fixed, hardcoded task count determined at DAG-definition time.
Custom operators are the correct extension point for repeated integration logic — extracting shared PythonOperator logic into a real operator is a genuine production-maturity signal.
Airflow is several coordinated services (scheduler, webserver, metadata database, executor), not one process — understanding this architecture explains a lot of real troubleshooting (stuck-queued tasks, DAG-parsing delays).
Executor choice (Local/Celery/Kubernetes) should follow actual scale and isolation needs, not be adopted preemptively — each has real, different operational tradeoffs.
Share:
Join our Community
Daily tips, job alerts, interview help — join engineers learning together
Also Worth Exploring
← Back to all Apache Airflow modules
CheatsheetsPYQ