At We Are Developers I gave a talk about my application modernization example which shows how to modernize 10+ year-old Java applications with modern cloud-based technologies.
Abstract
Are you curious to understand what application modernization has to do with rabbits? Do you want to learn how to modernize 10-year-old Java applications to gain benefits from the cloud? Do you want to try this yourself, following step-by-step instructions? Then you should attend this session!
Application modernization doesn’t happen overnight magically. Fortunately, it doesn’t have to. Application modernization is a journey with multiple steps where every step adds value which I’ll demonstrate via an open-source example.
The talk can be downloaded from Vimeo.
Alternatively you can watch the full first conference day on YouTube. My talk was the first one that day starting at 6:00 mins.
The demos are available as open source: Application Modernization – From Java EE in 2010 to Cloud-Native in 2021
You can run the example locally via Docker Desktop. There are also scripts and pipelines to deploy everything to Red Hat OpenShift.
The sample explains how to modernize applications in multiple steps:
- Monolith – WebSphere Traditional 8.5.5: Java EE 6 app from 2008 with Db2 database running in VMs or bare metal.
- Monolith – WebSphere Traditional 9 in container: Application converted with Transformation Advisor.
- Monolith – WebSphere Liberty: Application converted with Eclipse Migration Tools.
- Separated frontend: Dojo frontend in separate container.
- Monolith – Open Liberty: Modern project structure.
- Strangled Catalog Service and remaining Open Liberty Monolith: Strangled catalog service (inspired by Mono2Micro) developed with Quarkus and Postgres. Event driven architecture via Kafka.
- Strangled Catalog Service and remaining Quarkus Monolith: Strangled Quarkus catalog service uses reactive programming model. Remaining Quarkus monolith runs as native executable.
- Micro frontend based web application: Developed with single-spa and Vue.js. Messaging is done via RxJS.
- CI/CD via Tekton: Target OpenShift. Via OpenShift Pipelines operator.
- CI/CD via Tekton and ArgoCD: Target OpenShift. Via OpenShift GitOps operator.
After the modernization the application consists of multiple components, microservices and micro frontends.