Technology
Legacy modernization strategies: rehost, refactor, rewrite, replace
The main approaches to modernizing an old application, and how to choose among them.
Agencies run applications that are decades old, written in languages that are hard to staff, on platforms nearing end of support. Modernization is inevitable; the question is which approach fits each system.
Rehost
Move the application as-is to new infrastructure, typically cloud. Fast and low risk. Solves the hardware and hosting problem but not the application's age. Suited to systems that work well and are scheduled for replacement later.
Replatform
Make targeted changes to run on a modern platform, such as moving a database to a managed service or containerizing the application. Moderate effort, moderate benefit.
Refactor
Restructure the code without changing its behavior, often incrementally, to make it maintainable and to enable further change. Suited to applications with sound business logic and poor code structure.
Rewrite
Build a new application implementing the same functions. High effort and risk, high potential benefit. Suited when the existing code is unsalvageable and no product fits. Best done incrementally using the strangler pattern rather than as a single cutover.
Replace
Adopt a commercial or open-source product. Suited when the agency's process is common and a product exists. Requires configuration, integration, and data migration, and often process change.
Retire
Some applications are no longer needed. Assess before investing.
How to choose
Assess each application on business value, technical condition, risk, and cost. Consider staff capacity for change. Consider whether the business rules embedded in the application are documented anywhere else; if not, extracting them is a project of its own regardless of strategy.
Common mistakes
Choosing rewrite because it is exciting. Choosing rehost and calling it modernization. Underestimating data migration. Skipping the documentation of business rules.
Sequencing a portfolio
Start with an application that is high value, moderate complexity, and visibly painful. Success there funds and legitimizes the harder ones.