Migrating Applications to the Cloud

 

The adoption of cloud-based technologies is a significant trend impacting virtually every company today. While some organizations are still hesitant, many have already partially or fully migrated their applications to the cloud. This process of moving an application portfolio to the cloud is complex, requiring careful planning and time. Numerous companies are currently on this journey, striving for a complete or partial transition.

For a company with a complex application portfolio, possibly containing hundreds of systems, deciding which applications to migrate and how to do so can be challenging. There are many options, ranging from not migrating an application at all or retiring it, to replacing it with a cloud-based solution or moving it to the cloud with varying degrees of modification.

Retire
Some applications can be retired without the need to migrate them to the cloud. Retirement is a sensible decision if the application’s functions are already covered by other applications, can be integrated into other systems, or if the application is rarely or never used. Additionally, if the company’s operational model or strategy changes and the application is no longer necessary, retirement becomes a logical solution.

Retain
In cases where an application has specific hardware requirements that cannot be met in the cloud, or where strict data protection and regulatory requirements make cloud migration legally challenging, keeping the application on local infrastructure may be the best choice. This approach is also advisable when the application is critical to business operations and any changes would entail significant risks, or when complex integrations with local or connected applications make migration costly. Retention does not have to be a permanent decision; after certain preparations, it may be worth revisiting the migration question.

Repurchase (Switch to Cloud Version)
Many applications currently running on local infrastructure have cloud-based versions, which simplifies the migration process. For large, critical applications such as customer portals and enterprise resource planning systems, vendors often offer cloud-based versions. In some cases, there may not be a direct cloud version of the application, but a cloud-based alternative offering similar or enhanced functionality might exist, possibly even supporting migration. Transitioning to a cloud application with equal or better functionality is often a reasonable decision.

When Should Applications Be Modified?
Beyond the major critical applications for which vendors typically provide cloud solutions, many other applications in a company’s portfolio also support business processes and are often connected to these larger applications. These applications are frequently custom-developed, making the decision on how to migrate them to the cloud even more complex. Solutions range from simple cloud hosting, where the application runs in the cloud, to fully transforming the application into a full-fledged cloud application by leveraging cloud platform advantages. As companies increasingly adopt cloud technologies, the time and cost investments will also grow.

Rehosting (Running in the Cloud)
There are situations where companies face time constraints, limited resources, or high risk aversion during cloud migration. In such cases, rehosting—running the application in the cloud with minimal or no modifications—can be an optimal solution. Companies often consider this approach when they only wish to update the hardware without purchasing new hardware or when they are preparing the application for later transformation into a cloud-native application. At the beginning of the cloud migration journey, this type of migration is often the most suitable, especially when the development team is still learning cloud technology as rehosting provides a quickly achievable initial step.

Tasks
Even with rehosting, numerous tasks must be completed. Virtual machines running the applications locally need to be migrated to the cloud, including web servers, application servers, databases, and other components. Necessary network configurations must be made, and application settings must be reconfigured to suit the cloud environment. Additionally, it is essential to ensure that the application’s deployment processes work in the cloud and to integrate the application with cloud-based logging, monitoring, and backup solutions. If needed, the application must also be switched to cloud-based authentication and access control services. Finally, it may be necessary to fine-tune certain cloud application components (e.g., databases) or application parameters to achieve optimal performance.

Advantages and Disadvantages
The advantage of rehosting is that it can be done quickly, cost-effectively, and with relatively low risk as no code modifications are necessary. However, this solution does not fully exploit cloud-specific benefits such as flexibility, scalability, and cost-efficiency.

Replatforming (Cloud Optimization)
When companies want to better leverage cloud-specific advantages, replatforming becomes relevant. This approach allows for the cloud’s high flexibility and scalability by making minor modifications to the application. Such benefits include cloud platforms’ storage and database solutions that enable cost optimization. There may also be a demand to use cloud-specific services such as big data analytics and artificial intelligence, which require a higher degree of integration with cloud platforms. Replatforming is a logical step in gradual migration where a company first runs the application in the cloud, then optimizes it, and finally transforms it into a fully cloud-native application.

Tasks
In addition to the tasks related to rehosting, the application’s code must be modified. The application’s infrastructure is transformed, typically involving containerization with tools like Docker. Containerization simplifies deployment and scaling in the cloud. For certain functions, it’s worth considering the use of serverless services such as AWS Lambda. Serverless services eliminate the need to manage servers for running specific functions, offering significant improvements in scalability and cost-efficiency. The application’s various data must be stored on cloud-based object or structured data storage or database services, and its data storage mechanisms must be adapted accordingly. The application’s integration must also be redesigned, partially or fully transitioning to cloud-provided API Gateway and Message Queue services.
 
Advantages and Disadvantages:
The advantage of replatforming is that it offers better performance and cost-efficiency than simple rehosting without requiring significant changes to the application. However, the downside is that it does not fully utilize all the possibilities the cloud offers.

Refactoring/Re-architecting (Transforming into a Cloud Application)
This type of migration involves significant transformation, and sometimes even a complete rebuilding of the existing application. Companies choose this path when an application needs to meet very high scalability requirements that are not possible with the current architecture, or if the application suffers from performance issues or high maintenance costs due to its current architecture. This approach is also warranted when outdated technologies prevent the use of modern development and operational procedures, or when the application cannot meet data protection and regulatory requirements. Another strong argument for refactoring is if the company’s strategy demands technological integration and responsiveness to rapid business changes that can only be achieved through this method.

Tasks
Beyond replatforming, a major task is redesigning and restructuring the application’s architecture. The goal is to have an application that can run as multiple independent components aligned with business functions. Alongside the traditional “clean architecture,” new architectural principles are introduced, such as microservices, micro frontends, and the vertical slice approach, to support the organization of the application around business functions. Greater reliance on serverless services and cloud integration capabilities like API gateways and message queues is essential. Complete automation of CI/CD processes is also indispensable in transforming an application into a cloud-native application.

Advantages and Disadvantages:
The advantage of transforming into a cloud application is that it fully leverages the cloud’s flexibility and scalability. However, the drawback is that it is time-consuming, costly, and carries significant risks in implementation.

Related Stuff

Custom Application Building Platform: Combining the Advantages of Low-Code and Custom Development

When a company plans to acquire software, the first decision is whether to buy off-the-shelf software, rent a solution, or opt for custom development. Companies

Migrating Applications to the Cloud

The adoption of cloud-based technologies is a significant trend impacting virtually every company today. While some organizations are still hesitant, many have already partially

The role of the Human Factor in Enterprise Software Development

In the past few decades, the focus in enterprise software development has frequently shifted between prioritizing technology, methodologies, and human involvement as the key