Modernizing a system that the business depends on every day is like rebuilding a ship at sea. The goal is to deliver value continuously while reducing risk, not to do one heroic rewrite.
Big-bang rewrites fail often: the old system keeps changing while you build the new one, and hidden business rules only show up at go-live.
Named by Martin Fowler. Put a facade/proxy in front of the old system and move functionality to the new system one slice at a time, until the old one can be switched off.
A translation layer between the new model and the legacy model, so legacy concepts and naming do not leak into your new code. (From Domain-Driven Design.)
| Strategy | Meaning |
|---|---|
| Retain | Leave it as is (for now) |
| Retire | Switch it off |
| Rehost | "Lift and shift" to new infrastructure |
| Relocate | Move platform with minimal change (e.g. VMware to cloud) |
| Replatform | Small changes to benefit from a new platform |
| Repurchase | Replace with a SaaS / off-the-shelf product |
| Refactor / Re-architect | Rebuild for the new world |