Connexion / Inscription Account

Organizations across the globe and spanning various industries are turning to containerized microservices to innovate at speed. Many have adopted Red Hat OpenShift as a robust and highly-scalable enterprise-ready platform for hosting their containers.

There are so many Java frameworks available. Deciding which to use when developing on Red Hat OpenShift can be pretty challenging for developers. After all, the business needs the applications it relies on to run efficiently and to be able to scale up quickly when required.   

This post compares how well three different Java frameworks – specifically Spring Boot, the community build of Quarkus on JVM, and the community build of Quarkus as a native Linux executable – optimized Java for Red Hat OpenShift. We’re going to be looking at an experiment Bankdata conducted last year. 

Introducing Java frameworks

Let’s start by understanding what a Java framework is. In a nutshell, a Java framework is some reusable pre-written code that developers use when writing Java applications. You could see it as a template that allows developers to hit the ground running rather than having to start from scratch. 

The Java framework may include everything from predefined classes to predefined functions. It may also include libraries, a compiler, and other programs used in the development process. Developers then build on the framework with whatever custom code the application needs. They don’t have to bother with any code that has already been pre-written within the framework they’ve selected. 

Meet Bankdata

Bankdata conducted the comparison we’re going to be looking at here. As an IT service provider for several large Danish banks, Bankdata is one of Denmark's largest financial technology companies, with 750 employees. We provide complete IT solutions for its customers, who are also its owners. Eight Danish financial institutions own Bankdata. 

Its mission is to ensure its customers have the best competitive advantages. For that, Bankdata must create, implement, and run high-quality IT solutions. Miracle, a Red Hat Premier Business Partner and solution provider in EMEA, helped Bankdata set up a new way of working a few years ago, including adopting Red Hat OpenShift Container Platform and building a CI/CD platform. 

Bankdata is an innovator. We have a Central Expertise Team (CET) dedicated to testing out new technologies to create a more efficient IT environment and optimize costs, among other things. One specific area of their work is understanding how to optimize Bankdata’s OpenShift implementation to maximize resource efficiency.  

Looking closely into how its apps were running on OpenShift, Bankdata noticed that some were a little "sluggish." Checking resource consumption, we found around 80% of resources weren’t being used, they were being blocked in case some program might need them at some point.   

Moreover, rollbacks (and boot-ups) could take up to 25 minutes – and that would mean far too much downtime if a fault were found in a microservice serving a mobile banking app, payment system or customer service portal. After all, what customer is going to wait in a queue for 25 minutes to make a payment?

Bankdata had the vision of being able to roll back faults almost instantaneously, meaning customers would only experience the very minimum of impact if one ever occurred.   

Innovating with Quarkus  

Miracle introduced Bankdata to Quarkus during a workshop a couple of years ago. 

Thinking that maybe Quarkus could help, the team set up an experiment to compare resource efficiency between Spring Boot, Quarkus, and a native compilation of Quarkus, which we called "Quarkus-native." After all, Quarkus was built around a container-first philosophy, meaning it’s optimized for lower memory usage and faster startup times.

Bankdata was, at the time, using only the Spring Boot Java framework. The framework was working well in its complex IT environment. It met our security requirements and handled the classes, functions, and libraries that Bankdata's modern financial applications need. The question was, could Quarkus do the same – and improve resource efficiency too?

So, Miracle and the Bankdata team worked together to try to mirror their Spring Boot project generator. The generator allows developers to generate a base project that meets Bankdata’s very specific and complex security requirements, and other IT needs. After three months of coding, the new Quarkus version of the generator was ready. 

Exciting results

We generated a bookstore application for the Spring Boot test using the old Spring Boot generator, then generated the same bookstore application for the Quarkus and Quarkus-native tests - this time using the new Quarkus project generator. 

Two weeks of testing brought about outstanding results. Tests included running an idle test, a normal load test, and a stress test for each of the three Java frameworks.

Application

Build time(seconds)

Deploy time

Boot-up time seconds

Call/sec

Call/sec Load

MB/call

MB/call Load

CPU usage

CPU usage Load

Spring Boot

175

68

175

40

107

0.084

0.07

0.031

0.21

Quarkus
 

195

68

57

40

153

0.0704

0.062

0.036

0.23

Quarkus Native

440

68

0.9

40

153

0.0194

0.03

0.009

0.15

 
imageDuring the load test, we found that the Quarkus boot-up times were just under a minute, compared to nearly three minutes for Spring Boot. For the Quarkus-native version boot times were less than a second! 

imageDuring the stress test, we found that all three versions looked to be able to handle the same number of calls per second. However, when we looked at the number of megabytes per call, we saw Quarkus was processing more calls for the same memory.  

We weren’t expecting to see the Quarkus-native application use less CPU, but we saw this surprising result consistently throughout the tests.

Designed for developers

Quarkus was designed to be easy to use right from the start, with features that work well with little to no configuration – and that is precisely what we found during the experiment. Quarkus was very easy to switch to and easy to work with.  Developers found it to be very much like Spring Boot but perhaps "a little less confusing." As such, it has the potential to improve developer productivity by optimizing efficiency.

After adopting Red Hat OpenShift, Bankdata realized that there might be more it could do to optimize its use of the container platform to move faster. In addition to providing the uptime we're looking for, migrating to Quarkus could reduce testing time for new developments so Bankdata could bring new services to market quicker.

While Bankdata has not yet decided whether to adopt Quarkus or Quarkus-native, it is hoping to go live with Quarkus in the third quarter of 2021 and has already started building templates. It is also planning to migrate to the Red Hat build of Quarkus soon.

And while Bankdata is already using Quarkus in production for a few non-critical microservices, the next step is to include migration of other small, rarely used microservices.. Three further steps will gradually see Quarkus migrations move to error-prone and increasingly critical microservices.

The experiments Miracle and Bankdata’s Central Expertise Team carried out suggest moving from Spring Boot to Quarkus offers real promise. Not only can using Quarkus with Red Hat OpenShift optimize computing resource usage and reduce boot times, it also provides a developer-friendly environment.


About the authors

Michael Rahbek has been a Software Developer at Bankdata for over eight years. Prior to Bankdata, he worked as a Developer at Logica, a multinational IT consultancy company now owned by CGI Inc.

Jakob Svan Nielsen is a department manager at Miracle A/S, a Red Hat partner located in Denmark. Miracle A/S delivers open source development, integration, and infrastructure supported by automation and DevOps. Nielsen has an extensive delivery background, and he is dedicated to the open source transformation agenda.

Lars Christensen is a department manager at Bankdata. He has 10 years experience with core banking systems and agile development.

Frederik Brokøb Sørensen is an Openshift Spring DevOps Developer at Bankdata. He studied IT at The Technical University of Denmark and has a Master's in Software Engineering from The University of Copenhagen.