Application Modernization Sample - From Java EE (2010) to Cloud-Native (2021)
This sample demonstrates how to modernize 10+ year-old Java EE applications with cloud-native technologies and the modern Java runtimes Quarkus and Open Liberty. The modernized application is deployed to and operated with OpenShift, the enterprise distribution of Kubernetes.
Application modernization is a journey. The legacy application has been modernized in ten steps.
The following 12 minutes video describes the project on a high level:
Architecture of the legacy application:
Screenshot of legacy storefront application:
Architecture of the modernized application:
Screenshot of modernized storefront application:
Project Overview
IBM Modernization Tools and IBM WebSphere
Strangler Pattern and Event Driven Architecture
User Experience Modernization
OpenShift Development and Deployment Patterns
CI/CD and DevOps
Observability
More Resources
If you want to run the modernized application locally, you can invoke the following commands. All you need is a local Docker installation and the git CLI.
Notes:
$ git clone https://github.com/nheidloff/application-modernization-javaee-quarkus.git && cd application-modernization-javaee-quarkus
$ ROOT_FOLDER=$(pwd)
$ sh ${ROOT_FOLDER}/scripts-docker/build-and-run.sh
The 'build-and-run.sh' script will launch the following containers.
Once everything has been started, you can open the web applications:
See the documentation how to run the demo.
The following scripts deploy the modernized application on Red Hat OpenShift on IBM Cloud. However the same instructions should work for other OpenShift and OCP deployments, for example CodeReady Containers.
First create an IBM Cloud Account. Then create an OpenShift cluster, for example via the IBM Cloud Dashboard. I've tested classic infrastructure, single zone, OpenShift 4.6.17, b3c.8x32 and 3 worker nodes.
Additionally you need to install Tekton. The easiest option is to use the 'OpenShift Pipelines' operator from the OperatorHub view in the OpenShift Console (screenshots). Simply accept all defaults. No local installations are necessary.
$ git clone https://github.com/nheidloff/application-modernization-javaee-quarkus.git && cd application-modernization-javaee-quarkus
$ ROOT_FOLDER=$(pwd)
$ sh ${ROOT_FOLDER}/scripts-openshift-tekton/check-prerequisites.sh
$ oc login ...
$ sh ${ROOT_FOLDER}/scripts-openshift/deploy-db2.sh
$ sh ${ROOT_FOLDER}/scripts-openshift/deploy-kafka.sh
$ sh ${ROOT_FOLDER}/scripts-openshift/deploy-postgres.sh
$ sh ${ROOT_FOLDER}/scripts-openshift-tekton/deploy-application.sh
$ sh ${ROOT_FOLDER}/scripts-openshift-tekton/show-urls.sh