Skip to main content
Building & modernizing

Replacing a legacy system without downtime: how the migration actually runs

You replace a legacy system in slices, not in one cutover: old and new run side by side until each piece is proven. How a no-downtime migration actually runs, what it costs, and when to start.

Steel scaffolding wrapping a stone building mid-renovation in warm-tone monochrome, the new tubular frame standing in front of the older facade as distinct planes.

You do not replace a legacy system in one weekend. The straight answer to "how do we replace this without downtime" is that you stop thinking of it as a replacement and start thinking of it as a migration in slices: the new system is built piece by piece alongside the old one, each piece proven on real traffic before the next begins, and the business keeps running the whole way through. The dramatic cutover, the weekend where everyone holds their breath and hopes the new system boots, is exactly the thing this approach removes.

This is not a new idea and it is not a trick. It is the standard way serious migrations are run when the system in question cannot afford to stop. What follows is how it actually works, what gets moved first, what it costs against the all-at-once rewrite, and how to tell whether your system is ready to move.

Why the big-bang rewrite keeps getting rejected

The pattern is familiar. A critical system ages. It gets slower, more expensive to host, and harder to change, until everyone is afraid to touch it. A full rewrite gets quoted, and rejected, and quoted again, and rejected again, for the same reason every time: nobody can afford the system being down while its replacement is built, and nobody believes the new one will do everything the old one did on the first day it goes live.

That fear is correct. A big-bang rewrite is all-or-nothing. You run the old system until a flag day, then switch the whole thing over at once. If anything is missing or broken at the switch, the business is down with no way back to the system that worked yesterday. Most big-bang rewrites that fail do not fail in the code. They fail at the cutover, when the new system meets real data and real load for the first time and the team discovers what the plan missed.

The alternative: migration in slices

Instead of replacing the whole system at once, you cut it into slices along its natural seams, a reporting module here, a billing path there, an admin tool, and rebuild one slice at a time on a modern stack. Each new slice goes live quietly, takes real traffic, and proves itself before the next one is started. The old system shrinks as the new one grows around it. Engineers have a name for this; the name is uglier than the idea. What matters is the property it gives you: at no point is the entire business riding on a switch that has never been tested.

Because the work is incremental, the plan can change as it goes. A slice that turns out harder than expected gets more time without holding up the rest. A priority that shifts mid-project reorders the queue. The all-at-once rewrite gives you one decision, made up front, that you live with for a year. The sliced migration gives you a decision at every phase boundary.

The two approaches diverge most where it matters: at the cutover and at the point of no return.

ConsiderationBig-bang rewriteSliced migration
How it goes liveOne flag day, the whole system switched at onceOne slice at a time, each proven on real traffic before the next
DowntimeA tense cutover where the business can go darkNone: old and new run side by side throughout
If something breaksNo way back to the system that worked yesterdayRouting flips back to the old path in minutes, nothing lost
When you decideOne decision up front you live with for a yearA decision at every phase boundary
When value arrivesAll at the distant finish lineIn instalments, each phase live and earning before the next
Cost shapeCommitted up front against a promiseSpread across phases, tracking proven progress
Main failure modeFails at the cutover when new code meets real data and loadA slice runs harder than expected and gets more time

Running old and new side by side

The mechanism that makes this safe is that both systems are live for a while. Data flows between them continuously, so either side holds the current truth at any moment. Traffic is routed one slice at a time: this function now answered by the new system, everything else still by the old. Every slice ships with a rollback. If the new path misbehaves, routing flips back to the old one in minutes, and nothing is lost because both sides were kept in sync the entire time.

This is the part that actually buys the no-downtime promise. The old system is not switched off when the new one arrives; it stays as the safety net until the new piece has earned its place under real load. Only then does it retire, one slice at a time, until there is nothing left of it.

The switchover should be the least eventful day of the project.

What gets migrated first?

Not the riskiest, scariest core. You start with a slice that is low-risk and high-learning: something real enough to prove the approach, contained enough that a problem is survivable. The first slice is as much about proving the migration machinery, the data sync, the routing, the rollback, the monitoring, as it is about the feature itself. Once that machinery is trusted, the harder slices follow using the same tooling, and the team is no longer guessing whether the method works.

The order is also chosen so that each phase pays for itself before the next begins: a lower hosting bill, a page that finally loads quickly, a manual workaround retired. Value arrives in instalments instead of waiting for one distant finish line, which is also what keeps the project funded and supported while it runs.

The switchover is meant to be boring

Because the system was migrated slice by slice, there is no single dramatic flag day at the end. The final switchover is a routing change on a quiet morning, flipping the last small piece, and most of the team only notices the system getting faster. If your migration plan still has a tense all-hands weekend scheduled at the finish, it has not actually removed the risk. It has renamed it.

What does a no-downtime migration cost?

A sliced migration is neither free nor instant, and it is worth being honest about the trade. For a mid-size system it typically runs over a quarter or two, sometimes longer for a large one, because it is deliberately incremental. It can also cost more in raw engineering hours than an idealised big-bang rewrite, because for a stretch you are running and syncing two systems at once rather than one.

What that premium buys is the removal of the cutover risk and the option to stop, reassess, or change direction at any phase boundary. Measured against a big-bang rewrite that fails, and a meaningful share of them do, the sliced migration is far cheaper, because the failure mode of big-bang is the business going dark with no way back. The spend is also spread across phases instead of committed up front, so the budget tracks proven progress rather than a promise. Expect a program measured in months, not weeks, paid in instalments, with each instalment tied to a piece that is already live.

How do you tell your stack is ready to move?

A few signs that the time has come: changes that used to take a day now take a week and everyone dreads them; hosting costs climb every year for a system that does less than it used to; the people who understood it are leaving or already gone; a framework or a vendor underneath it is going end of life. We expand on these warning signs in five signs your platform is quietly costing you money. None of these demand a rewrite tomorrow. They do mean the migration should be planned now, while it can still be done in slices on your own schedule, rather than later under the pressure of an outage or an end-of-support deadline.

Before starting, ask a firm five things: how the system will be sliced, what moves first and why, how data stays in sync across the two systems during the transition, what the rollback is for each phase, and what proof each phase has to pass before the next begins. A firm that answers those in plain language has done this before. One that promises a single clean cutover is selling you the exact risk you were trying to avoid.

Done this way, the replacement is an anticlimax on purpose. The system gets faster, the running costs drop, and the changes everyone used to schedule around fear become ordinary work. The engagement below is this pattern run end to end, on a system that could not be allowed to stop.

Building & modernizing

More in this topic.

All insights
Common questions

Straight answers

The questions this raises most often, answered plainly.

How do you replace a legacy system without downtime?

You stop treating it as a single replacement and run it as a migration in slices. The new system is built piece by piece alongside the old one, each piece proven on real traffic before the next begins, and the business keeps running the whole way through. The dramatic weekend cutover is exactly the thing this approach removes.

What is a sliced migration?

You cut the system into slices along its natural seams, a reporting module here, a billing path there, an admin tool, and rebuild one slice at a time on a modern stack. Each new slice goes live quietly, takes real traffic, and proves itself before the next starts. The old system shrinks as the new one grows around it, so the whole business is never riding on an untested switch.

What gets migrated first?

Not the riskiest core. You start with a slice that is low-risk and high-learning: something real enough to prove the approach, contained enough that a problem is survivable. The first slice proves the migration machinery, the data sync, the routing, the rollback, the monitoring, so the harder slices that follow use tooling the team already trusts.

What does a no-downtime migration cost?

For a mid-size system it typically runs over a quarter or two, sometimes longer for a large one, because it is deliberately incremental. It can cost more in raw engineering hours than an idealised big-bang rewrite, because for a stretch you run and sync two systems at once. The premium buys the removal of cutover risk, and the spend is spread across phases instead of committed up front.

How do you tell your system is ready to move?

A few signs: changes that used to take a day now take a week, hosting costs climb every year for a system that does less than it used to, the people who understood it are leaving or gone, or a framework or vendor underneath it is going end of life. None demand a rewrite tomorrow, but they mean the migration should be planned now, while it can still be done in slices on your own schedule.

Bangkok office-building rooftop in warm-tone monochrome: HVAC ducts and metal louvres in sharp geometry, hazy city silhouettes reduced to tonal bands above.

Working through a decision like this?

Tell us about it. The person who would do the work reads your message and replies within one business day.

Tell us about your project