Yalantis
In this extensive guide, we unveil the top reasons for cloud migration, touch upon security concerns, and discuss the process of cloud migration step-by-step.

Cloud migration checklist: 7 steps to successful app migration

  • Liliia Harkushko

    Market researcher

  • Igor Prots

    Application architect

Share

The rapid growth of cloud computing over the last few years doesn’t show signs of slowing. In fact, cloud adoption accelerated in 2020, fueled by the pandemic and a shift to remote work. Organizations of all sizes are striving to move their operations to the cloud, motivated by a set of significant advantages cloud technologies provide to businesses. Cloud migration is also often a part of the digital transformation journey for many companies. According to Gartner, 51 percent of enterprise IT spending will shift to the cloud by 2025.

This comprehensive article leads you through the whole process, from understanding the benefits to carrying out the actual migration. First, we discuss the reasons for high cloud adoption rates. Then we provide a detailed step-by-step plan for migrating to the cloud. We also talk in detail about six migration strategies and illustrate them based on our experience.

Top reasons for cloud migration

Before we dive deep into the technical implementation, let’s find out why most companies migrate to the cloud.

  • Cost savings

Migrating to the cloud helps you lower your capital and operational expenditures. When using cloud services, you don’t need to purchase costly server equipment and spend money on its maintenance, electricity, or HVAC. In addition, your system administrators and DevOps specialists don’t need to maintain or back up hardware and software, which reduces operational costs as well.

Most cloud hosting providers offer a pay-as-you-go business model, so your monthly expenses will depend on the resources you actually use.

SherWeb compared the cost of hosting an app on-premises and in the cloud. For the same configuration, the price of hosting on-premises was $1,476.31 a month, while the cost of hosting in the cloud was just $313.90 monthly.

TymeBank, the first digital bank in South Africa, moved 85% of their infrastructure from data centers to the AWS Cloud. Thanks to this solution, the company managed to reduce its infrastructure costs by 47%.

  • Scalability and flexibility

By migrating to the cloud, you can automatically add resources during peak loads and lower capacity when traffic is low. In contrast, when hosting on-premises, you need to buy additional equipment to meet peak loads and spend time on its installation.

Migrating data to the cloud is a good choice if you plan to expand to new markets and quickly acquire new customers. Moving to the cloud in 2008 helped Netflix withstand incremental growth in monthly streaming hours. In 2016, Netflix expanded its service to over 130 new countries. Leveraging several AWS cloud regions made global expansion smooth and successful.

  • Reliability

Unfortunately, downtime and hardware failures happen. But migrating to cloud computing can greatly shorten downtimes and reduce the risk of data loss. Most cloud hosting providers offer service-level agreements (SLAs) that guarantee up to 99.9% availability.

Providers analyze and mitigate all risks of failure related to hardware, timeouts, failover faults, and migration problems. The cloud provider is responsible for backups and quick disaster recovery, which saves time for your company on recovery operations.

  • Accessibility

With the cloud, you can access your applications anywhere and anytime, provided you have an internet connection. Hence, companies can offer more flexible work hours to their employees and support remote work.

Is migrating to the cloud secure?

Security and privacy remain the main roadblocks to public cloud migration. In reality, top IaaS providers do their utmost to protect their customers’ data. They employ top-notch data security specialists, regularly update their software, and strive to comply with modern data protection regulations.

To achieve more security, you can use a private cloud. This is a cloud environment dedicated to only one organization and hosted on the organization’s own equipment or by a cloud provider (like Amazon, which offers a Virtual Private Cloud service). Though a private cloud may cost more and require more effort from your IT staff, this option provides a higher level of security and customization while offering the same level of efficiency and scalability as a public cloud. A hybrid cloud environment, which is steadily gaining popularity among organizations, uses both private and public clouds.

Gartner highlights the importance of companies designing effective risk management strategies aligned with their overarching cloud strategies. According to Gartner’s recent predictions, through 2025, 99% of cloud security failures will be the customer’s fault. So to make your cloud migration and hosting highly secure, you should focus on implementing and enforcing policies on cloud ownership, responsibility, and risk acceptance as well as staff training. Plus, if you choose to cooperate with a skilled cloud and DevOps team, you have a higher chance to securely migrate your services to the cloud.

You may find it useful to know more about cloud security audit in our latest case study.

How to do the migration: step-by-step instructions

When you realize that the benefits of the cloud environment align with your business needs, it’s time to start preparing to migrate. Bear in mind that smooth migration requires qualified IT staff with experience in application migration. If your staff isn’t experienced enough to lead the migration process, you can contract with a qualified development team that can do everything for you.

Step 1. Define the scope of migration

Start by auditing and assessing your application portfolio for cloud readiness. What software do you use? Which software solutions will bring value when in the cloud? What applications don’t bring value and should be turned off? During this assessment, you can use a TIME quadrant, one of the effective methods to define what to do with each component of your current system. For this, assess the business and technical value of each solution.
So here’s the example of the TIME analysis and an explanation of each section of the quadrant:

  1. Tolerate. If you understand that migrating apps to the cloud won’t help you achieve your business goals or you can’t move them to the digital environment for compliance reasons, put them in the Tolerate section. Retaining the app on-premises is the best practice for these apps.
  2. Invest. Under this category fall innovative applications that have high business value but need some improvements and adjustments to deliver maximum value to your business. Replatforming and rearchitecting are common strategies for this type of app.
  3. Migrate. To this section, you should put apps that have high business value and don’t need extensive changes. Use a rehosting strategy for them.
  4. Eliminate. Applications that should be eliminated have low quality and low business value. In this case, you should use a repurchase or retire strategy.

Step 2. Choose a cloud migration strategy

The category of your app will help you identify the right migration strategy. In 2010, Gartner published its five strategies for cloud migration. Later, AWS slightly changed this list and introduced their so-called “6 R’s”. These are six common cloud migration strategies: replatforming, rehosting, refactoring (or rearchitecting), repurchasing, retaining, and retiring. Let’s talk in detail about each strategy.

Replatforming

During replatforming, also known as “lift, tinker, and shift,” developers make several minor optimizations before migration. This doesn’t include changes to the app’s core architecture, however, as that falls under refactoring.
For example, for one of our clients, we first built a software solution on the AWS cloud. But later the client wanted to expand company services to another country. That country had strict laws regarding data storage and processing that required storing its citizens’ data inside the country. The problem was that AWS didn’t have data centers in the target country. To solve this issue, we decided to replatform our client’s solution with the Oracle cloud, which had data centers in our target country. Thus, we left the front end of the solution unchanged and only slightly modified the back end.

Refactoring/rearchitecting

Refactoring implies a complete reengineering of the solution in order to create a cloud-native version of it. This strategy is the most time-consuming and costly. But it ensures long-term cost savings by matching actual resource requirements with cloud infrastructure. Also, cloud-native apps allow companies to quickly adapt to new customer requirements, as developers can easily add or modify existing functionality.
For another client, we used this strategy to move their back end from on-premises to the AWS cloud. They needed cloud migration services to ensure that their app could withstand high loads. First, we did an architecture assessment and came up with a few improvements:

  • Dockerized all backend applications.
  • Automated deployment to the Development and Production environments.
  • Set up actualized, refactored integration tests to run automatically in the pipeline.
  • Integrated SonarQube for code analysis and built a project code quality dashboard.
  • Wrote documentation about the feature branch strategy and release flow for the full project.

Architectural improvements we made:

  • The actual backend design was a monolithic application with a single database, and it was the main roadblock to scalability. All features were encapsulated in one project, but the client wanted to develop a few sub-projects that would reuse the current features of the monolithic app.
  • Our solution architects offered a solution to split the monolithic app into reusable microservices and develop new sub-projects based on them. To decrease the deployment, operating, and cloud migration costs, we used a Kubernetes cluster managed by AWS.

The architecture we created looks like the following:

As a result of our successful migration, we achieved exceptional reliability, scalability, and security, which is extremely vital for our client’s highly regulated domain. Also, we automated the deployment and rollback processes, so now they take only three minutes instead of 30. Check out our site reliability engineering expertise that helps us develop scalable and highly reliable software systems.

Read also: How to implement the most suitable software architecture for your business

Rehosting (lift-and-shift)

With the help of this strategy, developers simply move on-premises system components to the cloud without changing anything. This strategy is easier, faster, and cheaper than the previous two cloud migration strategies. Rehosting also allows for easier compliance and security management.

However, for most projects, it’s rather a short-term solution than a long-term option. The main bottleneck of using this service is the risk that apps will face latency or performance issues after migration because they weren’t optimized or modified to fit the cloud environment.

In our experience, classic lift and shift cases are rare. Usually, such cases still require replatforming or refactoring. As it was with one of our clients, who wanted to expand their solution to another AWS region with a simple rehosting strategy.

After a deep root-cause analysis of the requirements, we concluded that their case needed also reengineering before rehosting. A major issue was a payment provider that wasn’t supported in the country in which the product should work. To address this, we duplicated the product from one region to the new country of expansion. This caused integration issues that needed to be fixed and tested before deployment.

Repurchasing

You can use this strategy if you have commercially licensed software and want to switch to a SaaS solution. For instance, you can move from a proprietary on-premises customer relationship management (CRM) system to Salesforce.

Read also: How to migrate a traditional app to SaaS: Yalantis approach

Retiring

When developing an application portfolio, you may discover software solutions that you don’t need anymore or that have the same functionality as other solutions you use. In this case, retiring them is the best option.

Retaining/revisiting

Sometimes, either for security reasons, due to the need for major refactoring efforts, or regulatory compliance, your software solution needs to remain on-premises. You can revisit apps of this category later, to check if they can be moved to the cloud after a while.

Another important aspect to consider when choosing a migration strategy is the dependencies between applications. Will moving one app to the cloud negatively affect the work of other apps? To rapidly and accurately define dependencies between your system components, you can use application dependency mapping tools. These tools, which usually come as part of application management software, automatically discover connections between components and give you a holistic view of the whole infrastructure. This article overviews ten effective tools for dependency mapping including Dynatrace, Datadog, AppDynamics, and Prometheus.

Step 3. Define migration success

Next step in the migration project plan is to establish key performance indicators (KPIs). This will help you measure how well cloud migration meets your business goals and expectations. Here are the types of KPIs you should measure before and after moving data to the cloud:

  • Average response time – the amount of time the server usually takes to return the results of a request within a certain period
  • Peak response time – the longest server response time within a certain period
  • Overall uptime – the percentage of time the server and app are accessible to end users and running correctly
  • Error rates – the ratio between error requests and total requests
  • Error types – the number of logged app errors and thrown exceptions grouped by type
  • Network latency – the delay between a user’s request and server’s response
  • CPU and memory use
  • Number of data exposures
  • Indicators of compromise (IOCs) – the frequency of unusual and potentially malicious user activity
  • Network I/O – the use of network bandwidth for all monitored network devices
  • Monthly billing
  • Ongoing staffing costs
  • Hardware costs
  • External costs (money saved on electricity, storage, etc.)

Step 4. Choose a cloud environment

When choosing a cloud environment, you should first define the cloud model you want to use. You can choose between a public cloud (with a multi-tenant architecture, meaning several customers share cloud resources), private cloud, and hybrid cloud model.

Next, you should choose a cloud provider. Every year, Gartner releases its Magic Quadrant that defines the best cloud IaaS providers in terms of worldwide enterprise adoption, capabilities, and service availability. In the Magic Quadrant for global IaaS vendors in 2021, Gartner defines three market leaders:

  • Amazon Web Services (AWS)

AWS is an undisputed market leader that’s available in 24 geographic regions. It offers a wide range of services (analytics, storage, networking, content delivery, and machine learning) and has proved to be highly secure, reliable, and scalable. It has extensive technical documentation and a great set of cloud migration software to easen migration and maintenance. This is our choice for most projects.

But there are some downsides of AWS  cloud migration as well. AWS limits resource use by region, so the quantity of resources you can access is determined by your location. Also, it has a complex billing system that can be confusing.

  • Microsoft Azure

Azure boasts high reliability and availability and offers an SLA of 99.95% (which is approximately 4.3 hours of downtime per year). It’s a scalable and secure solution. On the other hand, it has the lowest ratio of availability zones to regions of any provider in Gartner’s Magic Quadrant. Also, it requires qualified IT staff to constantly manage and maintain the system (for things like patching and server monitoring). Azure cloud migration can be easily done with tools offered by Azure.

  • Google Cloud Platform (GCP)

GCP offers live migrations of Virtual Machines during maintenance events, meaning you can migrate live loads without app downtime. GCP is a cost-effective and secure solution that has a large list of availability zones, boasts high performance and productivity, and stores data redundantly, with automatic checksums to ensure data integrity.

But developers complain about a lack of quick and efficient customer support from Google after Google cloud migration. Also, despite its robust AI and big data services, some developers claim that GCP doesn’t innovate fast enough to keep up with AWS.

All these solutions offer public, private, and hybrid clouds. They also have price calculators so you can quickly find out the cost of using AWS, Azure, or GCP services. You can also think about setting up a multicloud environment, which entails using multiple private and public clouds. For instance, you can conduct both IBM cloud migration and AWS cloud storage migration, but it can cause some difficulties in maintaining both clouds.

Step 5. Automate migration

There are a variety of tools that can do the heavy lifting associated with cloud migration and post-migration support, helping organizations increase their speed of cloud migration, reduce migration risks and downtime, and lower migration costs. Moreover, companies leveraging automation tools can increase the success rate of their migration projects and witness faster time-to-value. What are these tools and how do they help businesses?

Sometimes, you need to migrate hundreds of app components and conduct thousands of performance tests to ensure a successful migration. Cloud migration tools can come to the rescue, allowing developers to automate the migration process.

The big three IaaS providers offer their own services for this task:

There are also a number of paid cloud-agnostic solutions like Carbonite Migrate, Micro Focus PlateSpin, Turbonomic, and Corent SurPaaS.

Migrating to the cloud won’t free your IT staff from managing environments and deployments. But infrastructure-as-code, or IaC, tools can. IaC uses a high-level coding language to replace manual infrastructure management efforts with several lines of code. With IaC, DevOps specialists explicitly code all infrastructure specifications in configuration files, and the whole infrastructure operates under rules defined in these files.

Developers can automate continuous integration (CI), continuous delivery (CD), and test-driven development (TDD). You  can also optimize your environment by the use of deployment orchestration, automated testing libraries, and version control systems (VCSs) to enhance and strengthen the integrity and fault tolerance of your software.

The most commonly used IaC tools include Terraform, AWS CloudFormation, Azure Resource Manager, and Google Cloud Deployment Manager. Terraform is a cloud-agnostic solution, while the other tools are dedicated to a certain cloud provider.

Step 6. Conduct a pilot migration

We recommend you test the waters before you proceed to large-scale migration. Conducting a pilot migration helps you check if your migration strategy is effective and identify what improvements you can make for a smooth large-scale migration.

To conduct a pilot migration:

  • Prepare the cloud platform.
  • Identify the first adopters – apps or data with a low workload that will be migrated.
  • Migrate pilot workloads to the cloud.
  • Measure and analyze performance and latency.
  • Optimize processes, tools, and platforms according to insights you receive.
  • Get ready for large-scale migration.

 

Step 7. Migrate

At this point, you’ve made all the preparations and proved your strategy. Now it’s time to take the most important step in the migration project lifecycle. In this step, you’ll run your production migration and move your users and data over to the cloud.

As you can see, migrating to the cloud is a complex process that requires thoughtful preparation and solid experience from the team responsible. If you want to move your system to cloud-based infrastructure and are looking for developers who can do it for you, Yalantis can help. Our specialists have a strong track record of conducting successful cloud migrations. We’ll carefully analyze your business needs and help you choose the strategy that fits you best.

Want to automate and optimize your business processes?

We can assist you

Check our consulting services

Rate this article

Share this article

5/5.0

based on 376 reviews