Application Migration Best Practices
Application migration involves the transfer of software from its original host environment to another location for a variety of reasons, including business strategy, technical evolution, or compliance requirements. Examples of application migration include moving software from on-premises servers to the cloud or transferring from one cloud provider’s environment to another.
Many enterprises are drawn to migration by the promise of a variety of business benefits, including cost savings, enhanced scaling, better reliability, or innovation. However, migrations can end up being a headache when value isn’t realized quickly enough or when the quality or budget isn’t what was envisaged.
The correct approach to application migration is largely driven by both enterprise strategy and the technical effort to be invested in preparing the application for the new environment. Rehosting, also known as “lift and shift,” is usually the first desirable option since practically no code changes are required in the transfer to the new environment. Approaches that involve changes to the code, such as replatforming, refactoring, or rearchitecting, result in increased migration complexity depending on the amount of code modification.
For some organizations, a total rebuild or replacement of a SaaS product would be the right decision in the event that the existing application architecture cannot fit the target environment. In all of these situations, risks abound that must be considered during the planning and implementation of migration, including unplanned downtime, compatibility issues, cost overruns, and security risks.
In this article, we identify some application migration best practices that organizations should consider to ensure success from the technical and business perspectives, both of which must be considered to achieve maximum enterprise value. This article focuses on migration from on-premises environments to the cloud; migrations across cloud platforms are excluded from the scope.
Summary of application migration best practices
To ensure that your application migration process meets the organization’s strategic objectives, we recommend adopting the following best practices.
Best practice | Description |
---|---|
Assess your application portfolio and TCO | Understand your application portfolio and the cost of operations to determine the best migration approach. |
Establish a plan for prioritized application migration | Determine the criticality, capability, sequence, and competence required for successful application migration. |
Use a solution to discover assets and dependencies automatically | Deploy technology solutions that comprehensively identify, map, and configure application components and dependencies prior to migration. |
Implement a pre-and-post application testing approach | Test for data integrity, application performance, and security controls before and after migration. |
Contract application migration expertise | Engage vendor and CSP capabilities for planning, executing, and validating the application migration process. |
Automate application migration elements | Improve efficiency and effectiveness by automating manual, time-consuming, and error-prone migration processes. |
Assess your application portfolio and TCO
According to Gartner, application assessment is the most critical early phase of a cloud migration because failure to do so could result in incomplete requirements specification and downstream scope creep. An assessment provides invaluable information that better clarifies the business strategy for migration while informing subsequent planning activities. For application migration, the first step is identifying the applications in your portfolio, and, for each application, detailing the architecture, status, and criticality with regard to business value as well as the current use cases.
As the enterprise identifies the applications to be migrated, another important assessment step is determining the potential financial return of moving to the cloud. This involves comparing the current costs of on-premises hosting to cloud hosting costs to justify whether the application migration is worth it for the business.
Calculating the cloud total cost of ownership (TCO) is a critical exercise that should consider all factors. This encompasses not just technology costs (hosting, licenses, and modifications to architecture) but also costs related to people (structure and role changes, training, and reskilling), processes (changes in ways of working and operational activities), and partnerships (such as changes in existing vendor contracts and impacts on relationships). While cloud providers will provide TCO calculators, it is critical that organizations do their own research and calculate both direct and indirect costs to get a true picture that properly informs the application migration financials without undue influence.
Identifying, analyzing, and mitigating risks related to application migration is another key assessment step that should be carried out as part of application migration preparedness. Organizations should conduct a risk assessment for application migration by considering the potential issues that come with moving to the cloud, such as technical debt, cost controls, regulatory constraints, security concerns, and vendor reliability. Risk assessment is a critical governance element that requires both oversight and dedicated resources to ensure that mitigation strategies are implemented and reviewed in readiness for migration.
Establish a plan for prioritized application migration
Once the assessments are complete and their results affirm the stakeholders’ willingness to proceed with the migration, the next steps involve planning the actual migration process. Organizations will rarely adopt a big-bang approach in application migration but rather select a phased methodology that is iterative and incremental in nature. Developing a comprehensive and holistic application migration plan can help mitigate risks and ensure that all parties involved in the migration are aligned in terms of responsibilities, the sequence of activities with their timelines, tools to be used, and expectations. The application portfolio assessment outputs will be crucial in determining the criticality and dependencies involved in applications, including data connections, licenses, and integrations, which have to be carefully managed. The plan must consider security and testing requirements as well as requisite back-out plans.
Planning should also consider the human resource aspect. If the competencies that support the application migration are not present within the existing team, it’s necessary to acquire them through training, sourcing from new employees, or contracting with specialized partners. Ideally, these competencies should be sourced before the actual migration takes place. Capacity building for existing staff would involve certification training in applicable cloud modules related to the applications being migrated. The courses should be selected based on the chosen cloud service provider. Such competencies include selecting appropriate cloud services related to the applications migrated as well as techniques and tools for migration and supporting the applications in the cloud.
If already in place, planning should also include the creation and adoption of a governance framework for managing applications migrated to the cloud. This governance framework will spell out the direction that the application migration should take to deliver business benefits, including associated policies and processes that direct the management of configuration, data, security, and compliance aspects. The governance framework will also spell out measurable objectives to be met from the application migration, including improved availability, performance, and data security. Roles and responsibilities involved in the application migration will also be spelled out, including data ownership and approval mechanisms for procuring services and assigning privileges in the cloud.
Use a solution to discover assets and dependencies automatically
As planning is going on, the organization must take inventory of the application components and dependencies to be migrated to the cloud. This exercise is easier said than done, especially where the organization maintains manual records or retains application information through a variety of configuration and monitoring systems without a single view of dependencies. Legacy applications are particularly challenging in mapping out application architecture—a rigorous approach to updating documentation is rarely in place, while numerous changes involving feature updates, patches, and infrastructure configurations often occur.
Automating the discovery of application components and dependencies is an organization’s best bet for comprehensively understanding what is being migrated to the cloud. Deploying a solution like Device42 can aid in automatically generating a centralized repository of application relationships and dependencies—whether running on-premises on physical or virtual machines—in preparing for migration to the cloud. Automated discovery tools use native protocols to unearth all services, users, protocols, and ports; they then create application dependency diagrams that visualize application-to-device and component relationships.
Device42 automatically discovers IT assets and dependency maps (source)
Even with automation, one should not discount the role that human input plays in making automated discovery a success. IT teams must be involved in reviewing the configuration of discovery tools to ensure that the proper environmental context has been considered. They must then conduct a detailed analysis of the results to capture any application configuration aspects that may have been missed.
Implement a pre-and-post application testing approach
As with every other IT change, application migration comes with the inherent risk that whatever is working in the on-premises environment may not work in the same manner when transferred to the cloud. As a result, there must be a comprehensively defined application testing strategy that considers all relevant scenarios related to the migration. This strategy needs to be implemented before and after the migration to ensure that both functional and non-functional requirements are covered on both on-premises and cloud environments.
The scope of testing to be outlined in the strategy should include all relevant dimensions, including application stability, integration effectiveness, data integrity, security controls, and compliance requirements. Examples of testing activities for application migration as listed on the software testing help website include:
- Testing all the flows in the legacy application against the migrated application on the cloud
- Testing the migrated cloud application for both existing and new data
- Verifying that the migrated application still supports all the components supported previously on-premises
- Verifying that the migrated application is compatible with all possible operating systems, web browser versions, etc.
- Verifying if the old data is retained in the application and if new data works in the cloud environment
An important aspect of testing that should not be omitted is the validation of business requirements for application functionality and data quality. This includes a performance comparison for agreed-upon service levels as well as assessing the accuracy and completeness of data. Users involved in acceptance testing must be equipped with the right tools to comprehensively dig deep and see that business requirements are still met with regard to transactions and report quality.
Contract application migration expertise
Application migration comes with many uncertainties about how workloads will perform in the cloud environment, with a significant risk of performance degradation, data corruption, or compatibility issues. Mitigating these risks requires proper planning and configuration, especially where rearchitecting is necessary. However, in areas where the organization does not have in-house capabilities, that can be a challenge. Apart from training their staff on cloud technologies and migration techniques, organizations can leverage expertise from other sources, such as vendors like Device42 that have an ecosystem of partners who can help with configuration after discovery. Another source of expertise can be referencing published guidance on application migration from cloud service providers and other subject matter experts. For example, one can check out AWS’s prescriptive guidance on migration on the AWS website.
Another opportunity to contract expertise is to adopt tools from CSPs and specialist cloud migration companies for validating application migration. Such tools support end-to-end migration by ensuring compatibility with the cloud destination environment, conducting the pre-migration assessment, migrating workloads, and providing insights for performance optimization.
Automate application migration elements
The value of automation cannot be overstated when it comes to application migration. When mundane tasks are automated, human resources are freed to focus on higher-impact activities such as analysis and optimization. In addition, automated migration can help deliver benefits such as precision, reliability, reduced timelines, and associated costs. At an enterprise level, application migration involves many complex components and integrations, so it is recommended to orchestrate the application migration tasks, which come with advanced logic, to coordinate multiple tasks and adapt to changing conditions.
As enterprises consider automating their migrations, it is important that they consider conducting application modernization beforehand. Cloud-native architectures such as containers, micro-services, and APIs enable applications to maximize the benefits of automated migration to the cloud when it comes to the use of DevOps CI/CD tools like Jenkins or GitLab CI/CD. These benefits are not available to most legacy applications, so it is recommended that the organization consider rearchitecting its legacy applications before adopting an automated migration approach. Orchestration tools such as Kubernetes and Docker Engine transform tasks into code and map them to a single cohesive workflow to ensure that the application deployed to the cloud is optimized for performance and compliance.
Conclusion
This article provides guidance for any organization considering migrating its application workloads to the cloud from on-premises environments. It is clear that enterprises should endeavor to understand and map their existing application architectures while planning an effective migration. Using the right solutions to discover application components and dependencies can go a long way toward ensuring that functionality is not compromised when moving to the cloud.
Application migration requires the right plan and a rigorous approach to testing to ensure that performance benchmarks are met post-migration. Capabilities from vendors and CSPs, including expertise in modernization and automation, should be leveraged to make the application migration more effective.