Migrations stall when they are framed as a rewrite. A quarter passes, the old system still runs, the new one isn’t trusted, and product work waits on both. The way out is to migrate one data flow at a time and keep the old path alive until the new one has earned trust.
Step 1: pick flows by pain, not by size
List your pipelines with three columns: how often they break, how stale their output is for the people using it, and what they cost to run. Start with one that is painful and self-contained, not the biggest one.
Step 2: land raw events first
Before changing any transformation, capture the source as an append-only event stream. Now you have a replayable record, and the old batch job and the new streaming job can both read it.
Step 3: run both, compare, then cut over
Run old and new in parallel for long enough to cover a month-end, a deploy and a bad day. Compare outputs automatically, table by table, and write down the accepted differences. A reconciliation report is what makes the cutover a decision instead of a leap.
Step 4: cut over with a way back
Switch consumers one at a time, keep the old job runnable for a few weeks, and define the rollback in advance: who decides, and what the trigger is.
Don’t forget cost
Streaming isn’t automatically cheaper. Track cost per pipeline before and after, and keep batch where hourly freshness is genuinely enough. Plenty of flows should stay in Airflow and dbt.
The aim is not “everything real-time”. It is that each flow runs at the freshness its users actually need, and that the team can explain why.
More from the blog
Hire, freelancer, or dedicated pod: how to decide
Three ways for European companies to add data engineering capacity, what each really costs, and five questions that tell you which one fits.
Kafka consumer lag: the first alert to set up, and how to read it
Lag tells you whether consumers keep up. Alerting on its trend, not its size, catches stuck consumers before customers do.
Why a Moldovan company, and is that a risk?
Straight answers for CEOs and finance leads on stability, GDPR, contracts and travel when your engineering vendor is based in Moldova.