Strategies for updating legacy systems
It can be daunting to even think about replacing a critical piece of technology. The risk of harm to the business often keeps legacy software untouched for years. It make sense, making that change can cause disruptions and disruptions equals lost money. My advice is that you don't wait until you are forced to make the switch.
Here are some strategies for approaching the update:
- Lift-and-Shift - Sometimes also called Retain/Rehost. You take the existing software but move it to a new environment (i.e. the cloud)
- Rebuild - Rewrite the application from scratch using modern tech stacks and architectures. Also known as Refactoring or Rearchitecting.
- Replace - Find a commercial or SaaS solution and migrate to it.
- Encapsulate - Wrap legacy components with APIs that can integrated with new systems.
- Retire - If the system isn't critical or isn't frequently used, sometimes it's best just to turn it off.
Strategies to increase the chance of success
Success rates improve with phased, incremental approaches (avoiding "big bang" replacements, which fail ~70% per some reports). Key enablers: Thorough portfolio assessment, strong data migration plans, and tools like containers (Docker/Kubernetes).
Most common strategies

- Rehost/Replatform — Still the most frequent (quick wins for cloud migration; often first step in hybrid approaches).
- Replace with SaaS/COTS — Growing rapidly for non-core systems (e.g., replacing custom tools with modern platforms like Workday or Shopify).
- Rearchitect/Refactor with Strangler Fig Pattern — Popular for incremental replacement: Gradually build new microservices around the monolith, "strangling" the old code over time (low risk, no big-bang downtime). This is a lower risk strategy.
- Hybrid Approaches — Rarely all-or-nothing; most successful projects combine (e.g., encapsulate core, replace UI, replatform backend).
(photo courtesy of Wikipedia)
Common Industry Patterns
- Banks/Finance → Often retain core (e.g., COBOL mainframes) but encapsulate with APIs and replace frontends (e.g., mobile banking apps).
- Retail/E-commerce → Frequent full replacement or rebuild for scalability (e.g., moving from custom monoliths to microservices on AWS/Azure).
- Non-Profits/Education → Incremental rearchitecture to handle growth without disruption.
- Manufacturing/Logistics → Replatform to cloud, with gradual retirement of obsolete systems/modules.