Day 1: Apache Airflow Fundamentals
Part 1: Introduction to Apache Airflow
09:00–10:00 | 1 hour
- Workflow orchestration: what it is
- Key features and benefits of Apache Airflow
- Overview of Airflow 2.x and 3.x
Break: 15 minutes
Part 2: Installation and Environment Setup
10:15–11:15 | 1 hour
- Local installation
- Managed cloud options
Break: 15 minutes
Part 3: Navigating the UI
11:30–12:30 | 1 hour
- The web interface
- Monitoring DAG runs, tasks, and logs
Lunch break: 20 minutes
Part 4: Architecture and Core Concepts
12:50–14:20 | 1.5 hours
- DAGs, tasks, operators, hooks, and sensors
- Scheduler, webserver, and worker overview
- Executors and backends at a glance
- Airflow 3 architecture in detail
Break: 10 minutes
Part 5: Developing DAGs
14:30–16:00 | 1.5 hours
- TaskFlow API
- Extended hands-on practice with operators, sensors, and hooks
- Hook examples for different systems
- Sensor examples and operating modes
- Assets
- Essential CLI commands
Day 1 Outcome
Day 2: DAGs, dbt, Integrations
Part 1: Developing DAGs — Continuation
09:00–10:00 | 1 hour
- Recap of the previous day
- Dependencies and scheduling
trigger_rule— which upstream outcome should start a task- Data interval
catchupin Airflow 3.x- Dynamic DAG generation: patterns and trade-offs
Break: 15 minutes
Part 2: XCom in Depth
10:15–11:15 | 1 hour
- Explicit push/pull — the classic style
- Multiple XCom values from one task (multiple outputs)
- Where to find XCom in the UI
- Custom XCom backends (overview)
Break: 15 minutes
Part 3: Connecting to Databases and dbt Integration
11:30–12:30 | 1 hour
- Connections
- Variables
- Why connect Airflow and dbt at all
- ETL with dbt
- Level 1 — BashOperator
- Level 2 — Sensor before dbt
- Level 3 — Cosmos (detailed configuration)
Lunch break: 20 minutes
Part 4: dbt Integration, Continued
12:50–14:20 | 1.5 hours
- Level 4 — dbt Cloud provider
- Level 5 — Asset-based integration
- Data quality gate
- Errors and XCom
Break: 10 minutes
Part 5: Airflow 3 Beyond Python, and the Start of Versioning
14:30–16:00 | 1.5 hours
- A task written in Go
- Version control and CI/CD (introduction)
- Versioning: GitDagBundle
Day 2 Outcome
Day 3: Production, Diagnostics, and Monitoring
Part 1: CI/CD and Deployment (Continued)
09:00–10:00 | 1 hour
- Recap of the previous day
- Deployment: dev → prod (
requirements.txt, separate Connections/Variables per environment) - GitDagBundle and its relationship to DAG Versioning
- Rollback: what to do when a broken DAG reaches production
Break: 15 minutes
Part 2: Testing DAGs
10:15–11:15 | 1 hour
- Four levels of testing: import test, structure test, unit tests,
tasks test - Structure test — example
- Unit tests for business logic (extracting logic out of
@task)
Break: 15 minutes
Part 3: Diagnostics and Optimization
11:30–12:30 | 1 hour
- Task-Failure Checklist
- Performance Optimization
- TaskGroup
Lunch break: 20 minutes
Part 4: Production: Resources and Common Mistakes
12:50–14:20 | 1.5 hours
- Pools
- Non-idempotent writes
- Physical time vs. logical time
catchupdefaults — a common source of confusion (2.x vs. 3.x)
Break: 10 minutes
Part 5: Monitoring, Security, and Scaling
14:30–16:00 | 1.5 hours
- Failure/Success callbacks
- Deadlines (replacing legacy SLAs)
- RBAC and Secrets backend
- Scaling:
parallelism,max_active_runs,worker_concurrency, Pools