Work/Airflow migration

Rebuilding 1,200+ PowerShell jobs as Airflow DAGs

A banking client ran its data jobs as PowerShell scripts that moved raw data into structured tables. I designed the Python automation that rebuilt them as Airflow DAGs on Google Cloud, and processing ran 10x faster.

Role
Senior software engineer, designed the automation
Client
A bank (unnamed)
Timeline
2023 – 2025
Stack
Python, Apache Airflow, Cloud SQL for MySQL, GCP

01Context

The client's data pipeline was a large set of PowerShell scripts. Each one took raw data and turned it into a transformed, structured format in MySQL on Google Cloud. It worked, but it was slow, and scripts on their own don't give you the scheduling, retries and run history an orchestrator does.

Porting 1,200 jobs by hand would have taken months and produced 1,200 slightly different DAGs. So the migration itself became the thing to automate.

02The scale

migration / dagsconverted 0 / 1,200
PowerShell scriptAirflow DAGone square = one job
Raw data → transformed → structured tables in Cloud SQL for MySQL.

03Decisions

D1Automate the conversion, don't hand-port

The automation turned the existing job logic into Airflow DAGs that all followed one pattern: pick up raw data, transform it, load it into structured tables.

Trade-offJobs that didn't fit the pattern still needed a person, and they took the longest.

D2One shape for every DAG

Same structure, same naming, same retry behaviour. Anyone on the team could debug any job without learning its quirks first.

Trade-offA few jobs were pushed into a shape that wasn't ideal for them.

04Results

0+
jobs running as Airflow DAGs
0x
faster processing
0
pattern shared by every DAG

05Under the hood

What I designed or built myself:

migration / what-i-built.log
  • rewrite PowerShell job logic rebuilt in Python as Airflow DAGs.
  • load Raw data into transformed, structured tables in Cloud SQL for MySQL on GCP.
  • pattern One DAG structure shared by all 1,200+ jobs.
  • speed Processing 10x faster than the scripts it replaced.
Back to the startsAIge: one helpdesk bot for web, Teams and the phone
esc
↑ ↓ move↵ open