One of the critical questions you need to tackle when modernizing a legacy application is whether to migrate it to the new platform first or refactor it before doing so.
During the discovery and planning process we often encounter custom applications that already have a roadmap for modernization and refactoring. In other cases our discovery process uncovers end-of-life frameworks and software components, unpatched security vulnerabilities and poor documentation such that the list of applications that need refactoring gets longer. I’ve written about these types of applications in a series of posts on Migration Resistant Applications.
When planning cloud migration for legacy applications that either have a modernization roadmap in place or newly discovered need for refactoring, the issue of order becomes important. Should we migrate first or should we refactor first?
It depends, of course! Here are some of the principles that I use when helping organizations decide between those two options.
THE RATIONALE FOR MIGRATING FIRST
Migrating first is a good strategy when:
Your organization has many applications to move
Your organization is reasonably comfortable with the current state of enterprise applications
Your organization does not have time/capacity to review and test the code changes before a migration.
The benefits of migrating first are:
- Speed. Reducing or eliminating data center infrastructure and/or co-location leases quickly
- Makes a clear distinction between migration and refactoring and enables your organization to concentrate the disruption due to migration to a much shorter time span
- Spreads the costs of refactoring over a longer budgetary cycle
THE RATIONALE FOR REFACTORING FIRST
Refactoring first is a good strategy when:
- The targeted applications have known security vulnerabilities that need immediate remediation.
- The targeted applications are old and rely on customized installations/patching of operating systems and/or a patchwork of outdated languages, frameworks and libraries.
- The targeted applications have not had code, documentation or performance reviews in years and contain private/sensitive data subject to government regulations.
The benefits of refactoring first are:
- Your organization gains the full performance and cost savings that the cloud makes possible by refactoring using cloud-native, low code and “serverless” techniques.
- Your organization gets a clean application. By remediating all known issues you to move a solid, vetted, approved application to the cloud instead of taking your problems with you.
- Your organization gains a firm foundation for better and more efficient application support. By updating or creating missing documentation for features, policies, business rules, databases and code you provide a solid foundation for future support personnel.
So, yes, it does depend on your situation. Whether you migrate or refactor first depends on a mix of factors that include the number of applications to be moved, the quality of the applications in question, time pressures and organizational preference for front-loading the cost of refactoring or spreading it out. Although the decision can be complex, these principles can help you make the right decision for each application.