Skip to content
PromotEdge International

Home Guides How to modernize legacy applications

Guides · Guide

How to modernize legacy applications without a big-bang rewrite

The tempting way to modernize an old application is to rebuild it from scratch and switch over on a chosen day. It is also the riskiest: the new system has to match years of undocumented behavior at once, and the business stops if it does not. The safer way replaces the application piece by piece while it keeps running. This guide sets out that method, step by step. It is part of our guide to legacy system modernization.

Reviewed by Benjamin SardarUpdated 12 Nov 20263 min read

The short answer

How do you modernize a legacy application?

Modernize a legacy application in steps rather than one rewrite: assess what it does and how it is used, protect current behavior with automated tests, put a routing layer in front of it, build the first piece of new functionality alongside the old system, move data and traffic for that piece, confirm it works, then repeat until the old system can be retired. Martin Fowler calls this the strangler fig approach: new code gradually takes over until the legacy system can be switched off.

Key takeaways
  • Avoid big-bang rewrites; replace the application piece by piece.
  • Assess first: what the application does, who uses which parts, and what data it holds.
  • Protect current behavior with automated regression tests before changing anything.
  • Route traffic through a layer that can send each feature to old or new code.
  • Move one piece at a time, with data migration and a way back, until the old system can be retired.

Need this done for your business? A person reads every message and replies.

Ask for a call back

Modernizing step by step

Each step, what it produces and how you know it is done. Our own working guide, following the strangler fig approach.

Our own working guide. Approach: Martin Fowler, Strangler Fig Application. Strategies: AWS Prescriptive Guidance. Measures: DORA (Jan 2026).
StepProducesDone when
AssessMap of features, users, data, linksEvery feature has an owner and a target
Choose targetsStrategy per partEach part marked retire, buy, move or rebuild
Protect with testsRegression suite on current behaviorTests run on every change
Add routing layerOne entry point for all requestsAll traffic passes through it
Switch first pieceNew piece live; data reconciledFull traffic, errors normal, way back kept
Repeat and retireOld system handles nothingOld system archived and switched off

Assess the application, protect its behavior with automated tests, add a routing layer, build the first new piece alongside the old system, move its data and traffic, confirm, and repeat until the old system can be retired. Each step should be small, tested and reversible.

Why not a big-bang rewrite

A rewrite has to reproduce everything the old application does, including behavior nobody wrote down, and prove it all on switch-over day. Martin Fowler's strangler fig application (page dated August 2024) describes the alternative as a gradual approach to legacy modernization: build new functionality alongside the legacy code and move behavior over until the old system can be retired, the way a strangler fig grows around a tree.

Step 1: Assess the application

Map before you move:

  • What it does, feature by feature, including reports and scheduled jobs.
  • Who uses which parts, and how often.
  • What data it holds, and which other systems read or write it.
  • What is hardest to change and what breaks most.

Step 2: Choose the target for each part

Not every part needs rebuilding. Some can be retired, some replaced by a bought product, some moved with small changes. AWS's public list of seven strategies (retire, retain, rehost, relocate, repurchase, replatform, refactor) is a useful checklist for each part as well as each system.

Step 3: Protect current behavior with tests

Before changing anything, write automated tests that record what the application does today for its most important tasks. These become the regression suite; ISTQB defines regression testing as testing after modification to make sure nothing else broke. Run them in continuous integration on every change.

Step 4: Add a routing layer

Put a layer in front of the application, such as a proxy, gateway or façade, that receives every request and sends it to the old system. Later, the same layer sends selected features to the new code. Users see one application throughout.

Step 5: Build and switch the first piece

Start small, and learn the method on the first piece:

  • Pick a piece that matters, fairly separate and not the riskiest.
  • Build it in the new stack, with its own tests.
  • Migrate or sync its data, and reconcile counts with the old system.
  • Route a small share of traffic to it, watch errors, then route all of it.
  • Keep the way back: the router can send traffic to the old code if needed.

Step 6: Repeat, then retire

Take the next piece, and the next, until the old system handles nothing. Then archive its data as required, switch it off, and remove the routing rules. Track progress with the DORA metrics (last updated January 2026): change lead time and change fail rate should improve as more runs on the new code.

Data: the hardest part

Data often outlives every application that touches it. Decide early whether the old and new parts share a database for a while, or sync between two. Test migrations on copies of real data, reconcile record counts and totals after every move, and keep personal data handled as your privacy policy says.

Conclusion

To modernize a legacy application without a big-bang rewrite: assess what it does, choose a target for each part, protect behavior with automated tests, add a routing layer, build and switch one piece at a time with data reconciled and a way back, and retire the old system when it handles nothing. Small, tested, reversible steps keep the business running throughout.

PromotEdge International is an international strategy, technology, marketing and design company, and our delivery team is in India. Our modernization team moves old applications piece by piece, tested at each step. We are not a partner of any cloud provider.

Facts we rely on: see our company facts for what we state about ourselves and where each fact comes from.

Common questions

  • In steps: assess what it does, choose a target for each part, protect current behavior with automated tests, put a routing layer in front, build and switch one piece at a time with its data, and repeat until the old system handles nothing and can be retired.

  • A gradual approach to legacy modernization described by Martin Fowler: build new functionality alongside the legacy system and move behavior over piece by piece until the old system can be retired, the way a strangler fig grows around a tree until the tree is gone.

  • Because the new system must reproduce years of behavior, much of it undocumented, and prove it all on one switch-over day. If it falls short, the business stops. Replacing piece by piece keeps the old system running and limits each risk to a small step.

  • Decide early whether old and new parts share a database for a while or sync between two. Test migrations on copies of real data, reconcile record counts and totals after every move, keep a way back, and handle personal data as your privacy policy says.

  • It depends on its size and how separable its parts are. The first piece usually takes longest, because it includes the tests and routing layer; later pieces go faster. Because each step delivers value, the business benefits before the whole move is finished.

  • Yes. Our modernization team assesses old applications and moves them piece by piece, protected by automated tests, without stopping the business. We are not a partner of any cloud provider, and we publish no rate card.

Sources

Each figure in this guide comes from one of these, read on the date shown.

  1. Martin Fowler: Strangler Fig Application (page dated 22 Aug 2024), read 12 Nov 2026
  2. AWS Prescriptive Guidance: migration strategies (the seven Rs), read 12 Nov 2026
  3. ISTQB glossary: regression testing, read 12 Nov 2026
  4. GitHub Docs: continuous integration, read 12 Nov 2026
  5. DORA: metrics guide, last updated 5 Jan 2026, read 12 Nov 2026

Brands we have worked with

  • Fine Organics
  • Weichai
  • Novozymes
  • Dozco
  • SANY
  • Prezent
  • Honest AI
  • SCENNE
  • Sara International
  • Vega MPS
  • Desi Machine Pvt. Ltd.

Work delivered from India. Results are shared one to one, under NDA.

See all clients

Talk to us

Tell us what you need

We use these details only to reply to you.

Phone or WhatsApp (optional)
Who is it for? (optional)

Rather talk now?

How we work

  1. 01

    Tell us the goal

    A rough note through the form on what you sell and what needs to change.

  2. 02

    We study your market

    How people find you today, where inquiries get lost, then a call in your working day.

  3. 03

    A written plan

    The work, who does it and how it is measured. Nothing starts until you approve it.

  4. 04

    The work starts

    Our team in India does the work, with calls set in your working hours.

  5. 05

    Reports and visits

    Every number we report shows its source and date range, and we travel to our clients every 3 to 4 months.

Chat with us