AWS Open Source Blog
Accelerate your Application Modernization to Amazon EKS with Konveyor
Modernization is the process of progressively transforming legacy applications and infrastructure to extend into the higher value of cloud native services. Along with people and process changes, modernization unlocks new business capabilities, accelerates innovation, and reduces technical debt.
Migrating applications to the cloud is a three-phase process, starting with assessment, progressing with mobilization and executing with migration and modernization. During assessment and/or mobilization you select one of 7 migration strategies (also known as 7 Rs: Refactor, Replatform, Repurchase, Rehost, Relocate, Retain, and Retire), for each of your targeted workloads.
Application modernization is the process of building new, or updating existing ones, to a cloud-first approach, to align with modern technology and business requirements. Of the 7 Rs, Refactor and Replatform are the scope of application modernization.
Frequently, companies focus on transferring their workloads to the cloud, adopting rehosting and relocation as their primary strategies, mistakenly believing they are modernizing. However, this assumption is incorrect. The issue lies in the fact that merely relocating an application from a data center to the cloud (often referred to as a “lift and shift”) does not alter the fundamental essence of the codebase which will keep the same inherent drawbacks of the original architecture. True modernization only occurs when legacy applications undergo foundational re-architecting.
Lots of tools exist to assist during the three phases of migration, some provided by AWS, such as AWS Migration Hub, and others provided by third-parties. Today, we will talk about Konveyor, an open source tool, with specific support for modernizing applications running on Kubernetes.
Overview
Konveyor is an open source application modernization platform that helps organizations safely and predictably modernize applications to new technologies, with an initial focus on accelerating the adoption of legacy applications to Kubernetes. Konveyor was accepted by the Cloud Native Computing Foundation (CNCF) as a Sandbox project in July 2022 to help foster a diverse community of contributing organizations.
Konveyor is based on a 5-step methodology:
- Assess, in which an analysis of the AS-IS infrastructure, applications and interdependencies is followed by the definition of the possible TO-BE states, identifying gaps and paths to get there
- Rationalize, that facilitates the selection of the most suitable migration strategies, amongst the 7 Rs explained earlier
- Prepare, ensuring all is ready to start the migration
- Pilot, which aims at delivering a first migration of a representative set of applications, focusing on testing feasibility and making the process repeatable
- Scale, focusing on producing an accurate project plan for the full migration
This methodology is not required to be used with Konveyor but remains available to help guide others embarking on their own modernization journey.
The platform is structured around the concept of a Unified Experience to aid multiple personas such as enterprise architects who manage modernization engagements as well as the migrators, or developers who carry out the specific refactoring development work.
The experience is centered on:
- Surfacing information across an entire portfolio, providing the ability to see high-level trends combined with the ability to drill deep into the specific technical issues, and view the impacted source code
- Aiding the enterprise architect in making better informed decisions related to the modernization engagement
- Planning and managing work through integration with external tools for task creation and customized views of progress
- Execution of the modernization efforts by aiding the migrators who will perform the refactoring. Konveyor will not be a magic solution to automatically refactor source code, but it will aid the migrator in carrying out the modernization work by automating tasks such as the generation of Dockerfiles, Kubernetes Manifests, unit tests, and executing refactoring recipes when possible
Application Inventory, Code Analysis, and Assessments
Konveyor’s Application Inventory provides a view of an organization’s application portfolio. The inventory is the central component that all other pieces integrate into. From the application inventory, a user is able to run an Assessment or an Analysis of a given application and obtain reports that provide information about concerns for migrating that specific application.
Assessment is a questionnaire based tool that assesses the suitability of applications for deployment in containers within an enterprise Kubernetes platform. The reports provide information about the suitability of the applications for containerization, highlighting risks, and producing an adoption plan informed by effort, priority, and dependencies.
Analysis will examine both binaries and source code to help identify potential concerns or issues to aid in estimating the migration effort for different targets or paths. Konveyor has an extensive support for enterprise Java needs as of today, with additional languages in active development in the community with support for C# being the next language on the roadmap.
Further capabilities are in active development in the community but not yet integrated such as:
- Kubernetes resource generation via move2kube
- Monolith codebase analysis with Data Gravity Insights to gain insights to better refactor into a domain driven microservice by triangulating between code, data, and transactional boundaries
- Test generation via test-generator
- Standardize natural language descriptions of technology stack components with container-advisor to aid matching with an appropriate container image
- Analyze data-centric applications to explore database and transaction elements via Data-intensive Validity Analyzer
You can watch a demo of Konveyor in action.
A guided example of running an analysis on a Java application is also available.
Deployment
You have various options to deploy Konveyor:
- You can install it locally for evaluation with minikube
- You can use the Konveyor Operator for Operator Lifecycle Manager, to perform a “manual” installation, on any Kubernetes cluster
- You can quickly spin it up on a single-node EC2 instance from the AWS Marketplace
- You can use the Konveyor Pattern, to easily deploy it on an Amazon Elastic Kubernetes Service (Amazon EKS) cluster, with the help of Amazon EKS Blueprints
Amazon EKS Blueprints Konveyor Pattern
To deploy Konveyor with the Konveyor Pattern for Amazon EKS Blueprints, please follow the steps below (see Konveyor Pattern documentation for a complete description).
Ensure that you have installed the following tools on your machine:
- AWS Command Line Interface (AWS CLI) (also ensure it is configured)
- AWS Cloud Development Kit (AWS CDK)
- npm
- tsc
- make
Start by setting the account and region environment variables:
Clone the repository:
Set the pattern’s parameters in the CDK context by overriding the cdk.json
file (edit PARENT_DOMAIN_NAME
as it fits):
If you haven’t done it before, bootstrap your cdk account and region.
Run the following commands:
When deployment completes, you will be able to access Konveyor at https://<subdomain>.<parent-domain>
, with credentials:
- Username:
admin
- Password:
Passw0rd!
Conclusion
In this blog post, we provided an introduction to Konveyor, an open source tool that you can use in your modernization projects on Kubernetes. We looked at the five phases of its modernization methodology (Assess, Rationalize, Prepare, Pilot, Scale) and at how Konveyor is structured around the concept of a unified experience, to address perspectives of multiple personas. After diving into the Application Inventory, Code Analysis and Assessments functionalities, we explained ways for you to deploy Konveyor in different environments.
Please consider joining the user group of subject matter experts, should you want to share use cases and learnings around Modernization engagements, to improve Konveyor and its Rules. You can also join the Konveyor’s community meetings and subscribe to this mailing list, to learn more about upcoming features and share your insights.