* [Topics](/en/topics "Topics")
* What is application migration?
What is application migration?
==============================
Updated  December 5, 2024•*5*-minute read
Copy URL
Jump to section
---------------
OverviewMigration patternsMigration challengesMigrating legacy applicationsWhy migrateStages and best practicesWhy choose Red Hat
Overview
--------
Application migration is a process that can improve workloads by moving an application from one environment to another. Common types of application migrations include migrating from one cloud environment to another, one data center to another, a [public cloud](/en/topics/cloud-computing/what-is-public-cloud) to [private](/en/topics/cloud-computing/what-is-private-cloud) or [hybrid cloud](/en/topics/cloud-computing/what-is-hybrid-cloud) service, and from an on-premise data center to a cloud provider.
[Cloud migration](/en/topics/automation/what-is-cloud-migration) is the process of moving data and applications from an on-premises data center to a cloud-based infrastructure or from one cloud environment to another, also known as cloud-to-cloud migration. It may also include making changes to an application so that it will scale or perform better in a cloud environment. Additionally, data migration is the process of transferring data from one storage system or computing environment to another.
[Plan your app migration and modernization](/en/resources/openshift-universal-app-modernization-journey-ebook)
Application migration patterns
------------------------------
There are different patterns, or pathways, to application migration:
**Retire/replace**: This pattern can sometimes be the best option to remove an application or choose a new one. This could be because its value has decreased, its abilities are available somewhere else in an environment, or because there’s cost savings by replacing an application with a new solution like a [Software-as-a-Service (SaaS)](/en/topics/cloud-computing/what-is-saas) platform.
**Rehost**:  This is when an application is moved without significant changes to it. Also referred to as lift-and-shift, this process can be quicker than other migration pathways and lower the costs associated with migration. However, rehosting without application modification can lead to higher long-term costs due to running apps in the cloud without cloud native capabilities.
**Replatform**: This pattern involves making small changes to applications, which includes changing the operating systems or adjusting an application to work with a cloud native managed database.
**Refactor**: This pattern is also known as rearchitect, and refers to making major changes to an application like re-coding portions of an application to have cloud native functionalities.
**Rewrite**: This is also known as rebuild which is when an application is specifically rewritten for the cloud.
Cloud-native application development with Red Hat OpenShift
-----------------------------------------------------------
[Learn more about this use case](/en/technologies/cloud-computing/openshift/cloud-native "Learn more about this use case")
Application migration challenges
--------------------------------
There are several benefits to migrating applications to the cloud, including improved operational efficiency, faster deployment times and lower costs. However, there are still some challenges such as:
**Costs**: Without careful planning, organizations can experience unanticipated expenses. Teams should consider operational expenses, new licensing fees, new tool training costs, and other factors to stay within budget.
**Downtime**: Major changes to an application can create issues that lead to unexpected downtime.
**Technical complexity**: Dependencies can make refactoring or replatforming an application much more complex and time-consuming. Additionally, due to the complexity, it’s possible to have a skills gap when searching for experts in managing migration effectively.
**Change management**: Due to how organizations use applications, those differences can slow down a migration project.
**Licensing and compliance**: The ability to manage software licensing properly is important. It’s good to document enterprise applications and to take note of their licensing as it relates to cloud computing. Also, when moving to the cloud, organizations should ensure that the data moved to the cloud is [secure](/en/topics/security) and comply with all the relevant industry and government regulations.
Migrating legacy applications
-----------------------------
Migrating a legacy application comes with several specific challenges of its own. It is important to do a thorough assessment of any legacy application before migrating it. You can then decide on a pattern for the migration: retire/replace, rehost, replatform, refactor, or rewrite.
Issues you may face in migrating a legacy app include:
1. **Compatibility and integration:** Legacy applications may not work well with modern systems, requiring updates or changes.
2. **Data migration:** Transferring data from old systems can be complex and risky.
3. **Lack of documentation:** Poor documentation can make it difficult to understand how the app works and how best to migrate it.
4. **Technical debt:** Legacy apps often have outdated code or inefficient design.
5. **Resource constraints:** Migration demands time, skilled workers, and budget, which may be hard to allocate.
6. **Security risks:** Outdated software may have security vulnerabilities that need to be addressed.
7. **Performance issues:** The app may not perform as well after migration, requiring further optimization.
Why migrate your apps?
----------------------
A migration provides an opportunity for flexibility, simpler maintenance, and better performance. There are several reasons to migrate your applications, including [modernization](/en/topics/application-modernization) and containerization, technical debt, and innovation.
When organizations analyze an application for operational challenges and want to make improvements, they may consider questions like::
**Complexity**: Was the application developed in-house? How long has the application been used? Are there other apps or workflows dependent on that application? If so, how many?
**Criticality**: What’s the daily usage of this app? Who manages it? How much downtime can be tolerated without disrupting company operations? Is the application used in production, development, testing, or all three?
**Compliance**: What are the regulatory requirements that the application must meet?
**Availability**: What uptime standards must this application meet?
Application migration stages and best practices
-----------------------------------------------
Once the reason to migrate is identified and established, the process can now take place in four stages while maintaining best practices.
### Assess the applications
During the first stage, you’ll want to evaluate the application portfolio, including IT infrastructure, legacy systems, and limits that could affect migration. The destination environment should also be prepared by looking at compliance requirements, scalability, and business needs. The assessment stage is important for identifying the apps that are cloud-ready and ones that need changes.
### Evaluate the organizational aspects
Once the application has been assessed, it’s time to collaborate with relevant teams. These teams can participate in planning the migration and gain awareness of how the migration could affect them and the existing business processes. Communication is key at this stage.
### Choose your migration method and develop a strategy
For this stage, applications can start in groups, and then the migration can be performed in phases. To stay organized, you can document each phase to keep teams informed and gather supporting documents.
### Automate
To improve the efficiency, organizations can [automate](/en/topics/automation) repeated patterns. Automation can improve migration processing speeds, lower risk, and save money.
### Comprehensive testing
After the migration is complete, tests can be run to check if the migration was successful. This should include user acceptance testing (UAT) as well as security testing.
[Learn more about migrating applications](https://developers.redhat.com/products/mta/overview)
Why choose Red Hat?
-------------------
[Red Hat® OpenShift®](/en/technologies/cloud-computing/openshift) streamlines the entire lifecycle of application development—from building and deploying to running and managing. It helps simplify the complexities of application modernization and migration, including building and modernizing applications with AI across multi-cloud and hybrid environments, driving efficiency and productivity for developers and IT operations teams.
[Find out what's new and what's next in Red Hat OpenShift](/en/whats-new-red-hat-openshift)
Red Hat offers the [Migration Toolkit for Applications](https://developers.redhat.com/products/mta/overview) (MTA), which accelerates large-scale application modernization efforts across hybrid cloud environments on Red Hat OpenShift. With containerization-readiness, source-code analysis, and project management capabilities, this tool can help you modernize legacy applications faster.
As you look to migrate and modernize your applications for innovation in cloud-native development and artificial intelligence, Red Hat can help you move your traditional infrastructure, including virtual machines (VMs), to a comprehensive application platform where you can build, run, and deploy containerized and virtualized applications side by side. From there, you'll be ready to modernize at your own pace.
Migrate your virtual machines now to [Red Hat OpenShift Virtualization](/en/technologies/cloud-computing/openshift/virtualization), a modern application platform–based on the open source projects KVM and [KubeVirt](/en/topics/virtualization/what-is-kubevirt)–that can run virtual machines and containers side by side. The included [migration toolkit for virtualization](https://access.redhat.com/products/migration-toolkits-virtualization) provides the tools you need to start your migration in a few simple steps.  Use [automation](/en/technologies/management/ansible/automate-migrations-with-red-hat-ansible-automation-platform) to accelerate delivery with [Red Hat Ansible® Automation Platform](/en/technologies/management/ansible/virtual-infrastructure-management)–from migration at scale to Day 2 operations and remediation. Monitor the security and performance of your VMs from a single console with [Red Hat Advanced Cluster Management for Kubernetes](/en/technologies/management/advanced-cluster-management). With additional support options and partner integrations for storage, backup and disaster recovery, and networking, you can rely on Red Hat to keep your virtual infrastructure running smoothly throughout the hybrid cloud–and help you modernize when you’re ready.
[Explore virtualization with Red Hat](/en/products/virtualization)
Resource
The state of virtualization
---------------------------
See how IT leaders approach virtualization across cloud, platform, and migration needs and plan future innovations with virtual machines and containers.
[Get the resource](/en/engage/state-of-virtualization-ebook "The state of virtualization")
What's new, what's next in Red Hat OpenShift
--------------------------------------------
Find out more about the latest features for Red Hat OpenShift and what's next on the product roadmap.
[Keep reading](/en/whats-new-red-hat-openshift "What's new, what's next in Red Hat OpenShift")
Keep reading
------------
### What is serverless?
Serverless is a cloud-native development model that allows developers to build and run applications without having to manage servers.
[Read the article](/en/topics/cloud-native-apps/what-is-serverless "article | what is serverless?")
### Stateful vs stateless applications
The difference between stateful and stateless applications is that stateful applications save past and present information while stateless applications don’t.
[Read the article](/en/topics/cloud-native-apps/stateful-vs-stateless "article | Stateful vs stateless applications")
### What is an application development platform?
An application development platform is a set of integrated technologies that enable teams to build software applications efficiently.
[Read the article](/en/topics/cloud-native-apps/what-app-dev-platform "article | what is an application development platform?")
Application development and delivery resources
----------------------------------------------
### Related content
* Blog post
  [Bridging legacy and cloud-native: A new path with Red Hat OpenShift Dedicated deployed on Google Cloud and Google Cloud NetApp Volume](/en/blog/it-leaders-challenge-modernize-and-migrate-without-disruption)
* Case study
  [Hutchison Telecom Hong Kong (HTHK) enhances data infrastructure for AI innovation](/en/resources/hutchison-telecom-hong-kong-snapshot)
* Analyst material
  [Enterprise Java design patterns in the cloud-native era](/en/engage/oreilly-java-patterns-cloud)
* Blog post
  [The power shift: Why the future of the electric grid will be software-defined](/en/blog/power-shift-why-future-electric-grid-will-be-software-defined)
### Related articles
* [Red Hat OpenShift for developers](/en/technologies/cloud-computing/openshift/developers)
* [What is blue green deployment?](/en/topics/devops/what-is-blue-green-deployment)
* [What is application lifecycle management (ALM)?](/en/topics/devops/what-is-application-lifecycle-management-alm)
* [What is CI/CD?](/en/topics/devops/what-is-ci-cd)
* [What is Istio?](/en/topics/microservices/what-is-istio)
* [What is serverless?](/en/topics/cloud-native-apps/what-is-serverless)
* [What is a CI/CD pipeline?](/en/topics/devops/what-cicd-pipeline)
* [Stateful vs stateless applications](/en/topics/cloud-native-apps/stateful-vs-stateless)
* [What is application integration?](/en/topics/cloud-native-apps/application-integration)
* [What is the Kubernetes Java client?](/en/topics/cloud-computing/what-is-kubernetes-java-client)
* [Why use Red Hat Consulting?](/en/topics/application-modernization/the-value-of-red-hat-consulting)
* [Shift left vs. shift right](/en/topics/devops/shift-left-vs-shift-right)
* [Explore Joint Warfighting Cloud Capability with Red Hat](/en/topics/cloud-computing/joint-warfighting-cloud-capability-with-red-hat)
* [Modernizing defense software factories](/en/topics/cloud-computing/modernize-defense-software-factories)
* [How to accelerate modernizing legacy banking systems](/en/topics/financial-services/how-to-accelerate-modernizing-legacy-banking)
* [What is IT modernization?](/en/topics/application-modernization/what-is-it-modernization)
* [Why choose Red Hat for a DevOps Platform?](/en/topics/devops/why-choose-red-hat-for-devops)
* [What is DevSecOps?](/en/topics/devops/what-is-devsecops)
* [What is an application development platform?](/en/topics/cloud-native-apps/what-app-dev-platform)
* [Security in the software development lifecycle](/en/topics/security/software-development-lifecycle-security)
* [What is Java application modernization](/en/topics/application-modernization/what-is-java-application-modernization)
* [What is .NET application modernization?](/en/topics/application-modernization/what-is-dotnet-modernization)
* [What are cloud applications?](/en/topics/cloud-native-apps/what-are-cloud-applications)
* [What is agile methodology?](/en/topics/devops/what-is-agile-methodology)
* [How to deploy Red Hat OpenShift](/en/technologies/cloud-computing/openshift/deploy-red-hat-openshift)
* [Kubernetes-native Java development with Quarkus](/en/technologies/cloud-computing/openshift/quarkus)
* [What is digital transformation consulting](/en/topics/digital-transformation/what-is-digital-transformation-consulting)
* [What is deployment automation?](/en/topics/automation/what-is-deployment-automation)
* [What is payments infrastructure?](/en/topics/financial-services/what-is-payments-infrastructure)
* [What is an SDK?](/en/topics/cloud-native-apps/what-is-SDK)
* [What is a Java runtime environment (JRE)?](/en/topics/cloud-native-apps/what-is-a-Java-runtime-environment)
* [Why choose the Red Hat build of Quarkus?](/en/topics/cloud-native-apps/why-choose-red-hat-quarkus)
* [What is an application architecture?](/en/topics/cloud-native-apps/what-is-an-application-architecture)
* [What is Quarkus?](/en/topics/cloud-native-apps/what-is-quarkus)
* [What are Java frameworks?](/en/topics/cloud-native-apps/what-is-a-Java-framework)
* [What is an IDE?](/en/topics/platform-engineering/what-is-ide)
* [What is digital transformation?](/en/topics/digital-transformation/what-is-digital-transformation)
[More about this topic](/en/topics/application-modernization "More about this topic")