All Projects → IBM → application-modernization-javaee-quarkus

IBM / application-modernization-javaee-quarkus

Licence: Apache-2.0 license
Application Modernization Sample - From Java EE (2010) to Cloud-Native (2021)

Programming Languages

java
68154 projects - #9 most used programming language
HTML
75241 projects
shell
77523 projects
javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to application-modernization-javaee-quarkus

jakartaee-kubernetes
Effective Kubernetes for Java EE, Jakarta EE and MicroProfile Developers
Stars: ✭ 32 (-67.68%)
Mutual labels:  javaee, microprofile, jakartaee
boost
Boost Maven and Gradle plugins for MicroProfile development
Stars: ✭ 27 (-72.73%)
Mutual labels:  microprofile, jakartaee
graphql-example
A MicroProfile GraphQL Example
Stars: ✭ 44 (-55.56%)
Mutual labels:  microprofile, quarkus
jakartaee8-starter-boilerplate
A boilerplate project for starting a Jakarta EE 8 application in seconds
Stars: ✭ 55 (-44.44%)
Mutual labels:  openliberty, jakartaee
microprofile1.2-samples
Eclipse MicroProfile 1.2 Samples
Stars: ✭ 22 (-77.78%)
Mutual labels:  javaee, microprofile
quarkus-performance
Comparing the CPU/Memory utilisation - Quarkus via GraalVM Native Image vs. Quarkus via Java Runtime vs. Payara-Micro via Java Runtime.
Stars: ✭ 49 (-50.51%)
Mutual labels:  cloudnative, quarkus
microprofile.training
home of http://microprofile.training sample app
Stars: ✭ 19 (-80.81%)
Mutual labels:  microprofile, jakartaee
jakartaee-azure
Java/Jakarta EE on Azure
Stars: ✭ 35 (-64.65%)
Mutual labels:  javaee, jakartaee
x-ray
Statistics and analytics Java EE 6 software for blogs (tested with roller) and webapps. It is a vanilla Java EE 6 (REST/JAX-RS, CDI, EJB, JPA) app, tested on Glassfish v3.1, built with Maven 3 / hudson and developed with NetBeans 7. X-ray is the sample app of the "Real World Night Hacks" book.
Stars: ✭ 27 (-72.73%)
Mutual labels:  javaee, microprofile
membership
Membership service (to demonstrate graphQL)
Stars: ✭ 19 (-80.81%)
Mutual labels:  javaee, openliberty
pragmatic-microservices-lab
Hands-on lab demonstrating how to create pragmatic microservices with Java EE and MicroProfile
Stars: ✭ 28 (-71.72%)
Mutual labels:  javaee, microprofile
WDR
Jython framework aiming for simplified WebSphere Application Server scripting
Stars: ✭ 43 (-56.57%)
Mutual labels:  websphere
Defterp
deftERP - Jakarta EE (Java EE 7 : JSF, JPA, EJB, CDI, Bean Validation)
Stars: ✭ 207 (+109.09%)
Mutual labels:  javaee
Core
Forge Core Framework APIs and Implementation
Stars: ✭ 195 (+96.97%)
Mutual labels:  javaee
Visualee
A maven plugin to visualize java ee projects
Stars: ✭ 169 (+70.71%)
Mutual labels:  javaee
quarkus-micrometer-extension
This is a quarkus extension that performs build time initialization, configuration, and injection of MeterRegistry, MeterBinder, and MeterFilter instances for micrometer.
Stars: ✭ 12 (-87.88%)
Mutual labels:  quarkus
micro-lc
An open source micro-frontend orchestrator
Stars: ✭ 199 (+101.01%)
Mutual labels:  micro-frontends
Windup
Windup - Application Migration and Assessment Tool
Stars: ✭ 129 (+30.3%)
Mutual labels:  javaee
Deltaspike
Mirror of Apache Deltaspike
Stars: ✭ 129 (+30.3%)
Mutual labels:  javaee
Tomcat Maven Plugin
Mirror of Apache Tomcat Maven plugin
Stars: ✭ 127 (+28.28%)
Mutual labels:  javaee

Application Modernization - From Java EE in 2010 to Cloud-Native in 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.

Project Structure

Demonstrated Capabilities, Technologies and Tools

Application modernization is a journey. The legacy application has been modernized in ten steps.

  1. Monolith - WebSphere Traditional 8.5.5
    • Java EE 6 app from 2008 with Db2 database running in VMs or bare metal.
  2. Monolith - WebSphere Traditional 9 in container
    • Application converted with Transformation Advisor.
  3. Monolith - WebSphere Liberty
    • Application converted with Eclipse Migration Tools.
  4. Separated frontend
    • Dojo frontend in separate container.
  5. Monolith - Open Liberty
    • Modern project structure.
  6. Strangled Catalog Service and remaining Open Liberty Monolith
    • Strangled catalog service (inspired by Mono2Micro) developed with Quarkus and Postgres.
    • Event driven architecture via Kafka.
  7. Strangled Catalog Service and remaining Quarkus Monolith
    • Strangled Quarkus catalog service uses reactive programming model.
    • Remaining Quarkus monolith runs as native executable.
  8. Micro frontend based web application
    • Developed with single-spa and Vue.js. Messaging is done via RxJS.
  9. CI/CD via Tekton
    • Target OpenShift. Via OpenShift Pipelines operator.
  10. CI/CD via Tekton and ArgoCD
    • Target OpenShift. Via OpenShift GitOps operator.

Introduction Video

The following 12 minutes video describes the project on a high level:

Video

Architecture

Architecture of the legacy application:

Screenshot of legacy storefront application:

Architecture of the modernized application:

Screenshot of modernized storefront application:

Documentation

Deployment via Docker Desktop

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:

  • Docker requires 14 GB memory, 10 CPUs and 80 GB disk space
  • It takes roughly 15 - 20 minutes to start everything
  • Make sure docker-compose is also installed (sounds like this needs to be installed separately on some systems)
$ 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.

Deployment to OpenShift on IBM Cloud with Tekton

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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].