Learn about migrating applications to today’s containerized and cloud native environments and discover best practices for planning a successful application migration project.
What is application migration?
Application migration is the process of moving a software application from one computing environment to another. You might, for instance, migrate an application from one data center to another, from an on-premises server to a cloud provider’s environment, or from the public cloud to a private cloud environment.
Because applications are typically built to run on particular operating systems in specific network architectures or developed for a single cloud platform, moving an application to a new environment can pose a number of challenges. It’s usually easier to migrate applications from virtualized or service-based architectures than it is to migrate those running on bare metal hardware.
Determining an overall application migration strategy involves considering each individual application’s dependencies and technical requirements, as well as your enterprise’s security, compliance, and cost constraints.
Different applications can take different paths to the cloud, even within the same technology environment. Since the early days of cloud computing, developers have referred to these application migration patterns with names that begin with “R."
- Rehost: Also known as lift-and-shift, this is a common strategy in which the enterprise moves the application from an on-premises server to a virtual machine in the cloud without making significant changes. Rehosting applications is usually quicker than other migration strategies and may significantly reduce migration costs. The downside is that without modification, the applications won’t benefit from cloud native computing capabilities, and the long-term costs of running them in the cloud may end up being higher.
- Refactor or re-architect: Refactoring refers to making fairly significant changes to the application so that it can scale or perform better in a cloud environment. It might involve recoding major portions of the application so that it can take better advantage of cloud native functionalities—such as restructuring a monolithic application into a set of microservices or modernizing the data store from SQL to NoSQL.
- Replatform: A kind of middle ground between lift-and-shift and re-architecting, replatforming an application involves making minor changes to it so that it can better benefit from cloud architecture. Examples might include upgrading the application to work with a cloud native managed database, changing the operating systems or middleware it will work with, or containerizing the application.
- Retire/replace: In some cases, it simply makes the most sense to decommission the application. This could be because its value is limited, because its capabilities are duplicated elsewhere in your environment, or because it’s more cost-effective to replace it with a new offering—often a Software-as-a-Service (SaaS) platform—than it is to migrate the application.
To develop the application migration strategy that’s best for your enterprise’s unique IT environment and business needs, you’ll need to understand exactly what’s in your application portfolio, the specifics of your security and compliance requirements, the cloud resources you’re currently consuming, and what your on-premises storage, compute, and network infrastructures are like.
In order for a cloud migration to be successful, you'll also need to be clear on the key business drivers that are motivating it and to align your strategy with these drivers. You’ll want to be conscious of why you’re migrating to the cloud, and what you’re hoping to achieve with the transition.
In the following video, Andrea Crawford takes a closer look at cloud migration:
Application migration risks
Stakeholders may fear that application migrations might cause disruptions to the business or result in unanticipated costs. The most common risks include the following:
- Unforeseen technical challenges: For example, an application may have so many dependencies that refactoring or replatforming can be much more complex and time-consuming than originally thought.
- Unanticipated costs: Without proper planning, businesses may incur expenses that they hadn’t budgeted for, such as new licensing fees or the training costs associated with getting employees up to speed on new tools.
- Unexpected downtime: Major changes to an application can cause conflicts or issues that lead to unplanned downtime, both for the application and for connected or dependent systems.
- Cultural issues or change management difficulties: Different organizations use apps differently, and those differences can create friction that slows down a migration project.
Undertaking a careful and detailed assessment of the risks and benefits associated with rehosting, re-architecting/replatforming, or retiring each application in your portfolio can help mitigate the overall risks associated with application migration. In particular, it’s important to compare department-level costs with the total cost to the enterprise and to assess the total cost of ownership (TCO) of any hardware you’d need to maintain to keep applications on premises.
Changing use cases for application migration
In previous years, enterprises often sought to move applications to the cloud because they wanted the flexibility, scalability, or predictable pay-as-you-go cost structure that cloud providers offer. Today, however, they’re also seeking environments that will enable innovation. Whether that means access to the high-performance processors needed to power deep learning algorithms or containerized applications that allow development teams to improve customers’ digital experiences rapidly by implementing changes at speed, cloud technologies make it possible for businesses to experiment, to test new ideas, and to “fail faster.” In many cases, cloud-friendly technologies like containerization make it possible to offer end users better experiences than the virtual machines they may replace.
App migration plan in three stages
Generally speaking, the application migration planning process can be divided into three stages. In each, it’s critical to weigh the costs of all potential options, including choosing to retain some on-premises workloads.
Application identification and assessment
In this initial discovery phase, you should begin by ensuring you have a comprehensive catalog of all applications in your portfolio. You’ll then categorize the applications according to whether they have business-critical or non-critical importance, whether their value is strategic or non-strategic, and what you stand to from migrating each to the cloud. You should strive to understand each application’s value in terms these characteristics:
- Impact on the business
- Ability to fulfill crucial business needs
- Timeliness and importance of data
- Size, complexity, and manageability
- Cost of maintenance and development
- Increased value from migration to the cloud
You’ll then want to conduct a cloud affinity assessment for each application you’re thinking about migrating. During this process, you can determine which applications are ready to go as-is and which would need significant changes before they could be made cloud-ready.
You can also employ application dependency discovery tools to help you determine the feasibility of migrating a particular workload outside its current environment.
Total cost of ownership (TCO) assessment
Determining the total cost of a cloud migration project can be a complex undertaking. You’ll need to compare “what-if” scenarios for keeping applications and infrastructure on-premises with those associated with moving them to the cloud. This means you’ll have to calculate purchasing, operating, and maintenance costs for the hardware you’d maintain on-premises in either scenario and the costs of licensing software.
You’ll want to compare the monthly bill you’d get from your cloud provider in either scenario and the costs of the migration itself, including the costs of testing the new infrastructure and training employees to use updated software. Don’t forget to consider maintenance costs for legacy applications that remain on-premises.
Assess overall risk and project duration
In the final phase of migration planning, you’ll establish a timeline for the project and identify any risks or stumbling blocks that you are particularly likely to encounter.
Legacy application migration to cloud
Generally speaking, the older the application, the more challenging (and as a result, potentially the less worthwhile) it is to migrate to the cloud. Outdated software is problematic in many ways: it’s expensive to maintain, it can raise security concerns if it’s no longer being patched, and it tends to perform poorly in modern computing environments. Be especially thorough with your assessment of legacy applications before deciding to migrate them.
Checklist and questions
When assessing each application’s viability and priority as a migration candidate, you’ll want to consider the following questions.
- Where was this application developed? If in-house, does the developer still work at your company?
- Is the application’s documentation readily available?
- How old is the application? How long has it been in use?
- How many other applications or workflows within your organization are dependent upon this one in some way?
- How many users depend upon this application on a daily basis? On a weekly basis?
- How much downtime could they tolerate before business operations would be disrupted?
- Is the application used in production, development, testing, or all three?
- Is the application managed by an in-house IT team or an external vendor?
- Are there any other applications with uptime/downtime requirements that must be synchronized with this application’s?
- Which regulatory requirements must your organization comply with?
- What uptime standards must this application conform to? Is it subject to a service level agreement (SLA) stipulating 99.99% uptime, for instance?
To ensure that no data or capabilities are lost during the application migration process, you should perform tests during the migration to verify that all data is present, that the data’s integrity has been maintained, and that the data is now in the correct storage location.
It’s also essential to conduct follow-up testing after the migration is complete, benchmarking application performance and ensuring that security controls remain in place.
Application migration across hypervisors
Virtualization is a fundamental component in many cloud migration strategies because virtual machines can readily be run in new physical hardware environments. It’s even possible to move a live application—running on a virtual machine—between physical host machines without disrupting the end user’s experience. The flexibility and versatility of virtualized computing environments dramatically simplifies the process of application migration.
To learn more about the role that virtualization can play in modern cloud computing strategies, see the following video:
Types of hypervisors and migration options
- VMWare application migration: It’s possible to lift-and-shift virtual machines running on on-premises VMware instances into a VMWare VCenter Server running in a private cloud without disrupting operations, causing downtime, or requiring application reconfiguration.
- Red Hat application migration: Red Hat offers an application migration toolkit—which is a customizable and extensible software solution—that analyzes IT environments to identify application interdependencies. It provides dashboard-style analytics reporting to highlight applications that are likely to experience problems during migration.
Available cloud services
Many services are available to help your enterprise strategize, plan, and execute a successful cloud migration.
In a comprehensive blueprint service offering, your vendor will aid you in clarifying your migration strategy and objectives, gathering information about your applications and environment, identifying your users’ needs and your business requirements, and coming up with a detailed plan of action for your migration.
If you choose a managed deployment option, your vendor will not only aid you in strategizing and planning for your migration but will also manage the migration itself and any associated testing and troubleshooting. This is usually a turn-key service offering that includes full-scale, end-to-end support.
Cloud managed services
A managed cloud service offering typically includes monitoring and maintenance of your cloud-based IT environment. Your managed cloud service provider will assume responsibility for multiple functions, ranging from managing cloud security to procuring as-a-service offerings from vendors on your behalf. Application migration can be included within a packaged service offering or added on an á la carte basis.
Application modernization services include custom development offerings that can prepare legacy applications for use in the cloud by modifying them so they’ll run in containers or virtualized environments.
Application migration and IBM Cloud
Application migration can be the start of new avenues for innovation, including application modernization on an organization’s journey to cloud. That’s why IBM Cloud offers a full suite of cloud migration tools and services to keep things moving.
Take the next step:
- Check out IBM Services for Cloud Migration, which offers fully managed migrations using your own tools as well as seamless lift-and-shift migrations of VMware workloads.
Get started with an IBM Cloud account today.