Application Modernization
Application modernization is a necessary part of cloud-centric business transformation. Business pressures demand faster time to market. IT economics require greater workload mobility to allow migrations to the cloud, improving operational efficiency and cost reductions.
The success of a digital transformation depends on the ability of applications to build innovative capabilities and deliver them quickly and to accelerate developer productivity and the adoption of new cloud-native technologies. Containers, Kubernetes, and microservices deliver speed and simplicity and are being adopted rapidly. But, your current estate determines your modernization strategy. Rewriting your entire application estate isn’t feasible, so modernization is inevitable.
Modernizing your applications provides a few immediate benefits:
Accelerating digital transformation. Application modernization is driven by the need to transform business to build capabilities and deliver them quickly.
Improving developer productivity. Adopting cloud-native and containerization technology enables self service for developers.
Improving operational efficiency and standardization. DevOps enablement drives a culture of automation and transformation of operations.
The application modernization journey
What does application modernization mean? To start your modernization journey, you must understand the approaches that are right for your inventory and your modernization goals and choose the approach that best fits your needs.
Modernization comes in many flavors. First, analyze your current application estate and prioritize your modernization goals. You can use IBM Cloud™ Transformation Advisor to analyze and categorize your applications. It provides guidance on the right target application server and the amount of effort that is required to start the modernization journey.
Several factors determine an application’s path through the modernization phases and where it eventually finishes. Among those factors is the number of code changes that are required to move an application to a modern, cloud-ready application server and the business need for future investment in the application. The outcome of the analysis can help you select appropriate modernization patterns.
Review the Application modernization reference architecture to understand which people, tools, and steps you might need on your journey.
Move the monolith to cloud
Application migration to the cloud is often approached by using the VM-based “lift and shift” method. However, because of the rapid and broad adoption of container orchestration on Kubernetes platforms across virtually all cloud providers, containerization is usually the better way to move applications to the cloud. At the highest level, containerize means to get the applications that you have today to run in a container.
When you containerize an application, you’re focused on reducing costs, simplifying operations, and streamlining cloud migration to a common Kubernetes platform, such as Red Hat® OpenShift®. You’re also focused on moving toward a single operational model that can be used by both new cloud-native applications and traditional applications. By using the information from Transformation Advisor, you can decide at this phase whether the application can move to a modern, cloud-ready runtime such as IBM® WebSphere® Liberty. Such a move can require code changes and investment from the development team. You can also decide whether the application can move to a container that is based on traditional WebSphere without code changes.
Expose on-premises assets by using APIs
APIs enable assets that are difficult to enable for the cloud. By externalizing an application with an API, you allow new applications to use the exposed capability in an accessible way. Typically, this activity involves having an OpenAPI-specified REST interface that allows the interface to be discovered and managed. If you externalize the application early in the modernization lifecycle, you insulate consumers from further modernization activities that are done in pursuit of a complete cloud-native implementation.
Refactor the monolith into macroservices
Refactoring means getting serious about the monolithic things and starting to transform them to become cloud native. Refactoring is where you tackle the huge Java™ and JavaScript files and break monoliths into smaller deployable components as suggested by the programming model. These components are not fully independent microservices from an end-to-end delivery perspective. However, by using this approach, you can decouple modernization paths for individual macroservices and enable the Strangler pattern.
Add capabilities as microservices
Innovate incrementally and establish success early. Enriching an application with new business function is a great way to realize the value from application modernization for cloud. Your application can consume a wide variety of innovative services that are available in the cloud, such as AI, industry, and domain services.
Strangle the monolith
Incrementally withdraw the monolith from service by replacing functions with new implementations.
An application modernization journey that is container-oriented aligns with the hybrid nature of cloud adoption by large enterprises. It fully supports multicloud deployments that can span private, on-premises clouds and various public clouds by using standard Kubernetes-based container orchestration platforms, such as Red Hat OpenShift.
Modernization solutions
To help you on your cloud journey, IBM introduced experiences on modernization approaches, such as the incremental lift-and-shift to cloud-native microservices. You can make the most of your investments without rewriting your entire estate. When you modernize your applications, you can ease your move to the cloud on the full promise of cloud technology. With a cloud-native microservices approach, you can capitalize on the scalability and flexibility that is inherent to cloud. When you modernize your cloud-native applications, they can run concurrently and seamlessly connect with your investments. Barriers that prohibit productivity and integration are removed to create user experiences and develop applications.
IBM Cloud Pak for Applications solutions
IBM Cloud Pak™ for Applications is a full-stack cloud solution. It gives you an open environment where you can quickly build cloud-native applications, modernize or extend your applications, and deploy middleware consistently across clouds.
IBM Cloud Pak for Applications is portable to run on premises, on public clouds, or in a preintegrated system. It is certified, up-to-date software that secures the entire stack, from hardware to applications. It has a flexible consumption-based licensing model, where you pay for what you use and use the capabilities that you want.
IBM Cloud Pak for Applications supports your enterprise’s application runtimes and offers instrumental developer tools and modernization toolkits, DevOps, AppOps management, and a self-service portal. IBM Cloud Pak for Applications can speed up the ability to build cloud-native applications by using built-in developer tools and processes, including support for microservices functions and serverless computing. You can use this Cloud Pak to quickly build applications on any cloud. It provides the most straightforward modernization path to the cloud for WebSphere clients, with security, resiliency, and scalability.
As shown in the diagram, you can customize your modernization strategy with a flexible deployment model and modernization toolkit. You can also gradually move traditional applications to the cloud in a cost-effective way that makes sense for your business. As you modernize your applications, you can use insights to make decisions about what to replatform, repackage, and refactor, which will optimize your resources and costs.
You can develop cloud-native applications with containers, common services, developer tools of your choice, and integrated DevOps and use an optimized set of frameworks and runtimes for cloud-native and traditional applications. Accelerate development with governance that is supported by IBM expertise. Examine the application modernization solutions that are provided by IBM Cloud Pak for Applications. The solution is an end-to-end application modernization experience that includes Build, Deploy, and Run phases:
Build. When you containerize an application or integration middleware component, you’re moving to a common Kubernetes platform such as Red Hat OpenShift and to a single operational model. The model can be used by both new cloud-native applications and traditional applications. IBM Cloud Pak for Applications provides fully tested, secure, and certified application and middleware runtime containers.
Deploy. A key practice for containerization is to make application container images immutable and embrace a deployment and operations approach that is based on replacing running containers with the original image if problems occur. Thus, DevOps deployment automation pipelines are a building block of any containerization solution.
Run. As you move deeper into the container orchestration world of Kubernetes, you find that many of the responsibilities and tasks that are associated with a traditional WebSphere clustered environment are subsumed into the Kubernetes layer and into the common platform services that are provided by OpenShift.
Application replatforming to cloud-ready Liberty containers
Application containerization outcomes are greatly improved when containerization is accompanied by replatforming the application to a modern container-native runtime that is most suitable for cloud environments, such as WebSphere Liberty. Such modern application runtimes allow application containers to be more agile in terms of smaller runtime footprint and faster startup time. They also provide DevOps-oriented server configuration by using simple human-readable files and prebuilt integration points with common operational services such as logging, metrics, metering, health, and security. A few code changes are typically required to move applications from traditional WebSphere to Liberty.
For an end-to-end scenario that moves an application to the WebSphere Liberty runtime and runs it in Red Hat OpenShift, see Runtime modernization by using WebSphere Liberty.
Containerizing a traditional WebSphere application for operational modernization
Refactoring enterprise Java applications to WebSphere Liberty and Open Liberty containers is your most strategic option. However, if there is little business need for future investment in the WebSphere application and Transformation Advisor suggests that you need to change the code to move the application to WebSphere Liberty, you can use the container for traditional IBM WebSphere Application Server.
By repackaging traditional WebSphere or WebSphere Network Deployment (ND) applications into a container, you can modernize traditional WebSphere ND operations and replace manual administration of WebSphere ND cells with automated DevOps pipelines that automate applications deployment and configuration. You can reuse WebSphere automation scripting. If no such automation exists, you can use the configuration migration tools that are provided by IBM Cloud Pak for Applications to capture WebSphere environment configurations. Those tools create a separate DevOps pipeline for each application in the cell that is moved to a traditional WebSphere container.
For an end-to-end scenario that moves an application to the traditional WebSphere container and runs it in Red Hat OpenShift, see Operational modernization by using traditional WebSphere.