This post outlines 7 modernization strategies that you can accomplish to migrate an existing traditional application to the cloud and microservice architecture. These strategies build upon 7 options that Gartner outline in 2018.
Application modernization is the process of analyzing existing legacy applications and modernizing its infrastructure, environment, architecture, features. So, the complexity of modernizing traditional applications varies, depending on the architecture, platform, environment, coding, license agreement, and data. When you need to modernize traditional applications, the best approach that fits always depends on the platform that you are working on.
The discussion of modernization today is focused on under two main subjects. " monolithic to microservice", and "on-premise to cloud". Legacy-traditional platforms have two main characteristics that make difficult to manage them:
- Difficult to update
- Difficult or not cost-effective to scale
The benefits of application modernization:
- Accelerating digital transformation
- Improve developer productivity
- Improve operational efficiency
- Reduce products cost
- Improve service quality
"Application modernization is not one ‘thing,’” says Stefan van der Zijden, research director at Gartner. “If you’re faced with a legacy challenge, the best approach depends on the problem you’re trying to solve. Replacement isn’t the only option.”
According to McKinsey, end-to-end IT modernization can have significant positive effects on operations and productivity.
Encapsulate
The first legacy application modernization approach is "encapsulate" the application and make it available as services via an application programming interface (API). The main idea of this approach is to separate the monolithic application into a microservices application.
Benefits:
- Gradually migration from monolithic to the microservice architecture
- Enable modular programming
- Enable to facilitate debugging
- to clarify application code and make them reusable across projects.
Rehost
Also known as the "lift and shift" model. This model enables one to move an application from one infrastructure environment to another one without redesigning the application architecture or workflow. The complexity of an application is the significant value in deciding whether to use rehost or other methods.
Benefits:
- Minimize or no application changes
- No architecture changes
- Simple migration for a complex project
- Security and compliance management
- Reducing on-premises infrastructure cost
Examples:
- Amazon VM export/import
- VMware P2V
Replatform
Sometimes, you may need to make a few customizations and optimizations in order to achieve a flexible, automated, and tangible platform, without changing the core application architecture. So that, it's always called "lift-tinker-and-shift".
Benefits:
- Reduce the amount of time to spend managing application
- Automate tasks(patching, maintenance, etc.)
- Improve developer productivity
- Reducing security risks
Examples:
- Amazon RDS databases
- From Weblogic to Apache Tomcat
- Using AWS Elastic Beanstalk to deploy applications
- From Apache Kafka to AWS Kinesis
Refactor
This approach is similar to the rehost modernization method, but some components of the application are improved or changed while performing the refactoring steps. You might want to break up the application into the components like frontend, backend, databases, and logging services so that you can manage each of them independently to gain higher availability, elasticity, and reducing application downtime.
Benefits:
- Scaling applications in a cost-effective way(resource, speed, maintenance)
- Faster, smaller update in the modular structure
- Code portability
- Improve service more frequently
- Improve developer productivity
- Automate the systems
Examples:
- Containers, PaaS
- From monolithic to the microservice architecture
Rearchitect
It's the method that re-imagining how the application architect is designed and developed, using cloud-native tools to achieve scalability, gain agility, improve capabilities to adapt to the new technologies. The refactor method focus on improving the component’s features and structure, whereas the rearchitect method aims to design and develop application architecture. This method tends to be the most expensive, but, if you have capabilities to sustain the requirements of digital transformation, it can also be the most beneficial.
Benefits:
- Gain agility, flexibility and improve the capabilities of the product
- Implementation of the mix technology stack
- Improve business continuity
Examples:
- PaaS
- Microservice
- Serverless
Rebuild
Gartner defines the rebuild method as "rewrite the application component from scratch while preserving its scope and specifications".It uses the same approach in a similar way as the rearchitect method, but rather than remodelling you are starting from scratch. Sometimes, starting from scratch can be more cost-effective and usually yields a much better result compared to a remodelling project.
Benefits:
- Accelerate innovation
- Gain agility, flexibility and improve the capabilities of the product
- Implementation of the mix technology stack
- Improve business continuity
Examples:
- PaaS
- Microservice
- Serverless
Replace
Your legacy application still might have useful features to support your business. The replace method offers to replace it with a flexible cloud-based solution that can reduce risk and cost.
Benefits:
- Gain agility, flexibility.
- Scaling applications in a cost-effective way(resource, speed, maintenance)
- Gain agility, flexibility and improve the capabilities of the product
Examples:
- Replace Microsoft Exchange Server with the cloud-based Office 365
- Replace physical desktop with the cloud-based workspace
Links:
https://www.gartner.com/smarterwithgartner/7-options-to-modernize-legacy-systems/
https://www.architech.ca/application-modernization-strategies/