The Cloud Experience Everywhere
1770994 Members
2320 Online
109003 Solutions
New Article ๎ฅ‚
ServicesExperts

Modernize your applications with cloud-native engineering: A 4-step strategy

Cloud-native infrastructure adoption is on the rise, but most enterprises are not using its full potential. Modernizing existing applications is challenging, but itโ€™s achievable with this 4-step method.

By Nashad Abdul Rahiman, Chief Solution Architect, Cloud Native Computing Practice Area, HPE Pointnext Services

HPE-Pointnext-Services-technology-services-consulting-Cloud-Native.pngContainer adoption and Kubernetes have truly gone mainstream.1 Compelling features like platform portability and self-healing capabilities are pushing the adoption of container platforms. But a recent survey by Canonical suggests that only about 15% of enterprises are fully using Kubernetes to run their applications.2 This suggests that most enterprises are using container platforms for new applications or for the development environment, and their existing applications are still running on purely VM-centric infrastructure.

One of the key exercises that can maximize the benefits of cloud-native platforms is cloud-native engineering to modernize applications. This is the process of transforming legacy systems into systems that are driven by modern approaches โ€“ like newer languages, frameworks and architectures โ€“ that are the best fit for current business needs. With application modernization you reap benefits such as:

  • Reduction of technical debt
  • Flexibility to create newer features and improve the overall customer experience in ways that the legacy systems were not able to achieve
  • Alignment of applications with current technologies and trends
  • Increase in productivity and better separation of concerns by adopting the latest development practices like Agile or DevOps
  • Better use of infrastructure and resources available.

But even if they see the potential benefits, many enterprises are delaying application modernization. And it may not be the love of monolithic and legacy systems thatโ€™s holding them back โ€“ itโ€™s the challenges involved. These include:

  • Poorly managed source code
  • Lost knowledge about applications, or lack of proper documentation
  • Uncertainty about the risks, costs and ROI
  • Business disruptions that may arise in the modernization process
  • Time and effort taken
  • Gaps in skills and resources
  • Uncertainty about where to start.

The more enterprises wait to modernize their applications, the more technical debt the applications incur. However, with the right application modernization strategy and tools, enterprises can push forward and adopt the latest trends and technologies to create modern experiences for customers and partners.

A 4-step application modernization strategy

1. Application discovery and identification. This is simply taking stock of all the existing applications which you would like to modernize. This step is necessary to identify and categorize the applications based on metrics like value to the organization and complexity, as well as the technology and frameworks on which the applications are based. This gives you insights to help you choose the priority of modernization and identify the skillsets you may need for the exercise. For example, applications with high value and low complexity can be tackled first.

2. Assess the application modernization options. Once you have the list of applications you want to modernize, the next step is to identify and assess your options. This is where most enterprises find it challenging. Often only a few developers and architects have an end-to-end view of the applications, and at times there will not be enough documentation. Getting the right tools for analysis can help you with this step and enable you to make the right modernization choice based on the technical debt and the impact on your business.

There are 5 options (I call them the 5-Rs) that you can choose from โ€“ see the figure below:

HPE-Pointnext-Services-technology-services-consulting-Cloud-Native-Figure 1.png

 

  • Replace - Some applications with limited value can be kept and encapsulated or retired and replaced with another service that may be readily available. It often makes sense to decommission an application rather than migrating or modernizing it.
  • Rehost - Enterprises starting out with modernization, and those that want a quick migration without much impact to the existing application workflow, generally choose this approach. This step is more relevant to cloud computing migrations and enterprise applications.
  • Replatform โ€“ Some applications could be easily run with minimal code changes, such as recently developed applications or application frameworks that provide support for the latest platforms. These can be moved from virtual machines to containers and run on container platforms.
  • Refactor โ€“ This option is where you can break down your legacy monolith application into loosely coupled cloud-native microservices or even microliths to remove technical debt and switch to a new architecture to make the most of the features.
  • Rewrite - Applications with high impact and high technical debt that typically use old versions of application frameworks are better categorized to run as-is, and then replaced by a newly developed cloud-native application.

3. Choose the application modernization approach. Once you have chosen your application modernization option, itโ€™s time to ensure that the modernization will be executed seamlessly in terms of:

  • traffic to the application
  • database modernization
  • UI modernization
  • integration with 3rd party plugins.

For example, one of the most popular methods of application modernization is the Strangler Pattern.3 New services slowly replace the old system, and traffic to both the new services and the old application is managed using a traffic router โ€“ see the figure below.

HPE-Pointnext-Services-technology-services-consulting-Cloud-Native-Figure-2.png

 Itโ€™s also important to tightly integrate with DevOps and monitoring, for continuous application modernization as you upgrade. This can increase agility in delivering the benefits of the modernized application and its future versions, and it eases the testing or verification of the newly created services.

4. Create room for optimization and growth. Once youโ€™ve started this journey, it is important to keep the new services loosely coupled and abstract as much as possible in terms of dependencies with underlying infrastructure. That way, the application can achieve true portability and flexibility, which can provide the best fit for your business in terms of price, reliability, and performance. And it can ensure that new features are incorporated using new services.

Another important point is to use this opportunity to integrate security as an essential part of the project, as this can ensure that the application is well protected against the latest threats.

Choosing the right tools โ€“ and services โ€“ for application modernization

Now that you have the strategy in place, the most challenging action is finding the right tools for application modernization. Since, for most enterprises, assessment and analysis are the pain points, you can start with integrated development environments (IDEs) like Visual Studio, Visual Studio Code, and Eclipse, which can give you dependency graphs and some information about technical debt.

With static code analyzers like SonarQube and NDepend, you can get much more insight on the technical debt of your applications. To containerize the application, try OpenShift S2I, or gopaddle. Application Transformer for Tanzu is another tool that you can use to discover processes and applications running on VMs and modernize them. And if you want to accelerate the extraction microservices from legacy monolith Java applications, you can use vFunction. It combines dynamic and static code analysis, machine learning, and automation to automatically identify and accelerate the extraction of services.

Modernizing your application may not be an easy task, but with HPE Pointnext Services and our strategic partnerships you can accelerate your success. We can help you select the right strategy and tools to bring fresh value and improve the overall customer experience with modern frameworks and infrastructure.

Learn more about technology services consulting from HPE Pointnext Services.

1. See, for example, this report: CNCF Annual Survey 2021

2. Reported here: Kubernetes and cloud native operations report 2021

3. Described in this Microservices Architecture article: Pattern: Strangler application

Nashad Abdul Rahiman.png

Nashad Abdul Rahiman is a Chief Solution Architect in HPE Pointnext Servicesโ€™ Cloud Native Computing Practice Area. Nashad joined HPE in 2020. He has worked on application modernization and digital transformation in various industries. His key interests include AI/ML, Kubernetes, application development, public cloud and hybrid cloud. Nashad helps HPE teams deliver solutions based on cloud-native stacks to customers worldwide; he also designs enterprise-ready solutions that can be leveraged in future engagements.


Services Experts
Hewlett Packard Enterprise

twitter.com/HPE_Pointnext
linkedin.com/showcase/hpe-pointnext-services/
hpe.com/pointnext

About the Author

ServicesExperts

HPE Services Team experts share their insights on the topics and technologies that matter most for your business.