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:
Stakeholders may fear that application migrations might cause disruptions to the business or result in unanticipated costs. The most common risks include the following:
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.
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, enterprises are 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.
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:
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.
Overall risk and project duration assessment. 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.
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.
When organizations assess an application's viability and priority for migration, they consider the following issues.
Complexity: 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?
Criticality: 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 it 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?
Compliance: With which regulatory requirements must the application comply?
Availability: What uptime standards must this application conform to? For example, is it subject to a service level agreement (SLA) stipulating 99.99% uptime?
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.
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.
Types of hypervisors and migration operations
Many services are available to help your enterprise strategize, plan, and execute a successful cloud migration.
Migration blueprint: 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.
Migration deployment: 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: 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.
IBM Cloud Migration Services helps handle your business’ cloud migration so you can concentrate on everything else.
Expedite cloud migration initiatives with accurate, easy-to-use cloud migration planning capabilities.
Cloud computing transforms IT infrastructure into a utility, letting you ‘plug in' to computing resources and applications over the internet, without installing and maintaining them on-premises.
Cloud migration is the process of relocating an organization’s data, applications, and workloads to a cloud infrastructure.
Today, application modernization refers primarily to transforming monolithic legacy applications into cloud applications built on microservices architecture.
IBM Cloud Migration Services help you migrate your workloads on the cloud for digital transformation. We support rehosting patterns including mass migration, image migration, application migration, database rehosting, data migration and storage migration. Our declarative and continuous migration approach, with built-in automation in every phase, helps you at every stage of your migration journey.