SlideShare a Scribd company logo
Battle of the frameworks : Quarkus
vs SpringBoot
C1 Public
2
Introduction
Georgios Andrianakis
Princpal Software Engineer
Red Hat
Christos Sotiriou
Principal Architect, Platforms Design
Vodafone
C1 Public
3
• Quarkus 3.0 released!
• Expands on the existing State Of The Art infrastructure
with performance improvements and new features
– Hibernate ORM 6.2
– New Dev UI
– Management interface
– Redis Cache
– Info endpoint
– Pact integration
• Java 11 and 17
• Jakarta EE APIs and Microprofile 6
• Perfect blending of Reactive and Imperative worlds
Red Hat Quarkus: Current state
C1 Public
4
• DXL – Digital eXperience Layer
– The backbone of Vodafone’s modern digital services
– Intended as a caching, high-performance middleware, but then it grew
• 160+ Microservices
– Reactive programming model
• AWS hosting
• Initially in Spring, switched early to Quarkus in 2019
– Also examined NodeJS, GoLand, plain Vert.x
• DXL’s missions: Sheer API Performance and feature deliverability
– Goal: 2.5 secs max API latency, previously some API calls would take 30 seconds
– Achievent: 529ms average API latency
Vodafone Greece: Current state
C1 Public
5
Modern microservices middleware requirements
Caching (DDS)
Data holder File Management
Payments
Content
• Enterprize integration
– SOAP messages as well as REST
– Fault Tolerance, high resilience
– Config-first approach (12-factor
applications)
– Built to handle potentially big payloads
• High Throughput, low boot times
• Integration with cloud-native and
modern systems
– REST apis, MongoDB, Kubernetes, Kafka,
Redis, etc
• Fast development times
– Good programming models, and integration
with reactive frameworks
• Initially chose Spring, moved to
Quarkus in March 2019
C1 Public
6
A short story
January 2020 refactored
MyVodafone app release:
- Campaign released pointing
users to the new app.
- Response times suddenly
peaked to ~50 seconds.
One microservice was overloaded.
Quarkus
Deployment
Spring Boot (MVC):
● 800 MB RAM
● 500 mCPUs
● Boot time: 40 seconds
● 2 - 12 replicas
Slow boot times (40 seconds)
resulted in slow auto-scaling in
production.
Quarkus (plain RESTEasy, non-reactice)
● 360 MB RAM
● 300 mCPUs
● Boot time: 12 seconds
● 2-4 replicas
Faster boot times, resulted in a healthier
cluster
Performance and Developer
Experience
7
C1 Public
Performance
• Quarkus performs much better in
restrictive environments
– The less resources to the pod, the
bigger the difference between
Quarkus and Spring
– Quarkus performs very well under
pressure with limited resources
• Quarkus is adapting faster after boot
– Quarkus is reaching max throughput
in less time than Spring Boot in all
situations, especially with limited
resources
– Compile-time optimizations are
probably the cause
8
0
50000
100000
150000
200000
250000
Cold app Warmed Up
# Requests sustained in 30 seconds,
300mCPUs, 300MB RAM, 10 VUs
Spring Boot Quarkus
0
50000
100000
150000
200000
250000
Cold app Warmed Up
# Requests sustained in 30 seconds, 1CPU,
1GB RAM, 10VUs
Spring Boot Quarkus
0
100000
200000
300000
400000
500000
Cold app Warmed Up
# Requests sustained in 60 seconds,
300mCPUs, 300MB RAM, 30 VUs
Spring Boot Quarkus
• More RAM and CPU will narrow
the gap
• Spring, however will take more
time to reach its maximum
throughput than Quarkus
Tests conducted on Microk8s, Running on M1
Pro, with a total of 4 cpus and 6GB total RAM
C1 Public
9
• You will always limit your pod usage in real-life.
– K8s makes better decisions with deterministic resource allocation
– You will need control over your scaling and resource consumption (CPU / RAM)
– You must perform tests inside containers with limited CPU and RAM
• “The more you add, the slower it gets”
– The more dependencies and code you add to an app, the slower it gets,
especially in boot time (initial setup, setting up connections, etc)
– Quarkus’ boot times increase only logarithmically
– Quarkus seems to make AOT optimizations
• Comparing apples-to-apples
– Vodafone initially (2019) compared Quarkus non-reactive with Spring MVC
– Their reactive counterparts (Resteasy Reactive and Webflux) are much faster
– …but there is still a difference in performance and boot time especially in
microservices with many cross-cutting concerns
Performance
C1 Public
10
• Performance is the developer’s currency
– Less time on optimizations -> More time on building your
business logic
• Resilience
– Boot times improve resilience to traffic spikes
– Lower resource consumption increases the number of
replicas you can run in parallel at the same time
• Low resource consumption means better
horizontal scaling
– More replicas per microservice
– Kubernetes can manage replicas with more flexibility
Performance
Monolith
C1 Public
Cluster Scaling (Spring Boot)
11
Low-traffic hours
High Traffic hours
C1 Public
Cluster Scaling (Quarkus)
12
High Traffic hours Low-traffic hours
More microservices in the same quotas allows for more aggressive
scaling and faster cluster adaptiveness during high-traffic spikes
C1 Public
13
• Hot module replacement out of the box
• Microprofile specification was very simple
– Filters in outbout requests
– Simple Kafka and messaging implementation
– Microprofile Health and Fault Tolerance proved to be great assets
– Widespread adoption
– Our Spring developers felt at home
• Simple and lean programming model
– Reactive approaches work very good
• Developer-first choices
– Remote development is a plus
– Dev Services (added later) also sped up development
• Experienced Spring developers found it very easy to migrate
• Depending on the situation, dev performance improves 30% - 40%
– Measured in Agile Sprints
Developer Experience – Microprofile Spec
C1 Public
14
• Why reactive?
– Serve more than one operation per-thread
– Allows better granularity in parallelism and i/o
– It’s one of the reasons of Vodafone’s DXL’s low-latency
• Requires mentality shift
– Callback mechanism
– Asynchronous thinking
– Reactive frameworks to the rescue (Mutiny, Reactor, RxJava)
• Quarkus vs Spring reactive implementations
– Resteasy Reactive marries the Reactive and Imperative world perfectly
– Can use both interchangeable, with little to no mentality shift
– Spring needs to use a different stack altogether
– One needs to use WebFlux, and loses much flexibility with context propagation and
dependency injection
– Spring trafeoff: Peformance vs Flexibility
Developer Experience – Reactive
C1 Public
15
• JVM perks
– JVM has much higher throughput
– JVM can process large quantities of data with less memory than
native due to JIT
– JVM is very easily debuggable
– Native compilation requires a strong machine and much time
• Native app Perks
– Extremely low boot time
– Low Resource Consumption *
– … for smaller workloads
– System-components (like kubernetes operators)
– Useful for Lambda
– Useful for short-lived components
To Native or not to Native?
Monolith
Conclusion / Q&A
16
C1 Public
Want To know/learn/watch more?
17
• Stream processing app. with Kafka and Quarkus (12:20-13:00, MC2)
• Quarkus on AWS Lambda (14:10-14:25, MC3)
• Why and when to write a Quarkus extension (14:35-14:50, MC3)
• Quarkus Community BOF (15:05-16:05, MC3)
• Contract testing with Pact and Quarkus (16:35-17:15, MC3)
• OpenId Connect and JWT Security in Quarkus (17:30-18:10, MC2)
• A DXL Journey by Vodafone Greece (Friday, 15:35-15:50, MC3)

More Related Content

What's hot

Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Steve Pember
 
Introduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission ControlIntroduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission Control
Leon Chen
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
Eberhard Wolff
 
Metaspace
MetaspaceMetaspace
Metaspace
Yasumasa Suenaga
 
KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...
KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...
KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...
confluent
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
Toshiaki Maki
 
Effective Spring Transaction Management
Effective Spring Transaction ManagementEffective Spring Transaction Management
Effective Spring Transaction Management
UMA MAHESWARI
 
Spring Boot
Spring BootSpring Boot
Spring Boot
HongSeong Jeon
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOP
Dzmitry Naskou
 
Networking in Java with NIO and Netty
Networking in Java with NIO and NettyNetworking in Java with NIO and Netty
Networking in Java with NIO and Netty
Constantine Slisenka
 
Schema Registry 101 with Bill Bejeck | Kafka Summit London 2022
Schema Registry 101 with Bill Bejeck | Kafka Summit London 2022Schema Registry 101 with Bill Bejeck | Kafka Summit London 2022
Schema Registry 101 with Bill Bejeck | Kafka Summit London 2022
HostedbyConfluent
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
Christian Posta
 
Securing Kafka
Securing Kafka Securing Kafka
Securing Kafka
confluent
 
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda
 
Building flexible ETL pipelines with Apache Camel on Quarkus
Building flexible ETL pipelines with Apache Camel on QuarkusBuilding flexible ETL pipelines with Apache Camel on Quarkus
Building flexible ETL pipelines with Apache Camel on Quarkus
Ivelin Yanev
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
José Paumard
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
Taras Matyashovsky
 
[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes
Bruno Borges
 
Spring Security 5
Spring Security 5Spring Security 5
Spring Security 5
Jesus Perez Franco
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
Jeff Holoman
 

What's hot (20)

Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
 
Introduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission ControlIntroduction of Java GC Tuning and Java Java Mission Control
Introduction of Java GC Tuning and Java Java Mission Control
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
 
Metaspace
MetaspaceMetaspace
Metaspace
 
KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...
KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...
KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
 
Effective Spring Transaction Management
Effective Spring Transaction ManagementEffective Spring Transaction Management
Effective Spring Transaction Management
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOP
 
Networking in Java with NIO and Netty
Networking in Java with NIO and NettyNetworking in Java with NIO and Netty
Networking in Java with NIO and Netty
 
Schema Registry 101 with Bill Bejeck | Kafka Summit London 2022
Schema Registry 101 with Bill Bejeck | Kafka Summit London 2022Schema Registry 101 with Bill Bejeck | Kafka Summit London 2022
Schema Registry 101 with Bill Bejeck | Kafka Summit London 2022
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
 
Securing Kafka
Securing Kafka Securing Kafka
Securing Kafka
 
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
 
Building flexible ETL pipelines with Apache Camel on Quarkus
Building flexible ETL pipelines with Apache Camel on QuarkusBuilding flexible ETL pipelines with Apache Camel on Quarkus
Building flexible ETL pipelines with Apache Camel on Quarkus
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 
[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes
 
Spring Security 5
Spring Security 5Spring Security 5
Spring Security 5
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 

Similar to Battle of the frameworks : Quarkus vs SpringBoot

C. Sotiriou, Vodafone Greece: Adopting Quarkus for the digital experience layer
C. Sotiriou, Vodafone Greece: Adopting Quarkus for the digital experience layerC. Sotiriou, Vodafone Greece: Adopting Quarkus for the digital experience layer
C. Sotiriou, Vodafone Greece: Adopting Quarkus for the digital experience layer
Uni Systems S.M.S.A.
 
Quarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java frameworkQuarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java framework
SVDevOps
 
Reactive Amsterdam - Maxim Burgerhout - Quarkus Intro
Reactive Amsterdam - Maxim Burgerhout - Quarkus IntroReactive Amsterdam - Maxim Burgerhout - Quarkus Intro
Reactive Amsterdam - Maxim Burgerhout - Quarkus Intro
Fabio Tiriticco
 
Introduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OSIntroduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OS
Steve Wong
 
Microservices with Node and Docker
Microservices with Node and DockerMicroservices with Node and Docker
Microservices with Node and Docker
Tony Pujals
 
Building big data pipelines with Kafka and Kubernetes
Building big data pipelines with Kafka and KubernetesBuilding big data pipelines with Kafka and Kubernetes
Building big data pipelines with Kafka and Kubernetes
Venu Ryali
 
How jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStaxHow jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStax
jKool
 
How jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStaxHow jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStax
DataStax
 
Performance architecture for cloud connect
Performance architecture for cloud connectPerformance architecture for cloud connect
Performance architecture for cloud connect
Adrian Cockcroft
 
Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications
OpenEBS
 
Slow things down to make them go faster [FOSDEM 2022]
Slow things down to make them go faster [FOSDEM 2022]Slow things down to make them go faster [FOSDEM 2022]
Slow things down to make them go faster [FOSDEM 2022]
Jimmy Angelakos
 
VMworld 2013: How SRP Delivers More Than Power to Their Customers
VMworld 2013: How SRP Delivers More Than Power to Their Customers VMworld 2013: How SRP Delivers More Than Power to Their Customers
VMworld 2013: How SRP Delivers More Than Power to Their Customers
VMworld
 
KnativeCon 2022 - Knative Functions
KnativeCon 2022 - Knative FunctionsKnativeCon 2022 - Knative Functions
KnativeCon 2022 - Knative Functions
Mauricio (Salaboy) Salatino
 
Lc3 beijing-june262018-sahdev zala-guangya
Lc3 beijing-june262018-sahdev zala-guangyaLc3 beijing-june262018-sahdev zala-guangya
Lc3 beijing-june262018-sahdev zala-guangya
Sahdev Zala
 
TechTarget Event - Storage Architectures for the Modern Data Center - Howard ...
TechTarget Event - Storage Architectures for the Modern Data Center - Howard ...TechTarget Event - Storage Architectures for the Modern Data Center - Howard ...
TechTarget Event - Storage Architectures for the Modern Data Center - Howard ...
NetApp
 
Mpls conference 2016-data center virtualisation-11-march
Mpls conference 2016-data center virtualisation-11-marchMpls conference 2016-data center virtualisation-11-march
Mpls conference 2016-data center virtualisation-11-march
Aricent
 
VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld
 
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
Getting value from IoT, Integration and Data Analytics
 
Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...
Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...
Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...
Andrew Miller
 
Presentation best practices for optimal configuration of oracle databases o...
Presentation   best practices for optimal configuration of oracle databases o...Presentation   best practices for optimal configuration of oracle databases o...
Presentation best practices for optimal configuration of oracle databases o...
xKinAnx
 

Similar to Battle of the frameworks : Quarkus vs SpringBoot (20)

C. Sotiriou, Vodafone Greece: Adopting Quarkus for the digital experience layer
C. Sotiriou, Vodafone Greece: Adopting Quarkus for the digital experience layerC. Sotiriou, Vodafone Greece: Adopting Quarkus for the digital experience layer
C. Sotiriou, Vodafone Greece: Adopting Quarkus for the digital experience layer
 
Quarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java frameworkQuarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java framework
 
Reactive Amsterdam - Maxim Burgerhout - Quarkus Intro
Reactive Amsterdam - Maxim Burgerhout - Quarkus IntroReactive Amsterdam - Maxim Burgerhout - Quarkus Intro
Reactive Amsterdam - Maxim Burgerhout - Quarkus Intro
 
Introduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OSIntroduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OS
 
Microservices with Node and Docker
Microservices with Node and DockerMicroservices with Node and Docker
Microservices with Node and Docker
 
Building big data pipelines with Kafka and Kubernetes
Building big data pipelines with Kafka and KubernetesBuilding big data pipelines with Kafka and Kubernetes
Building big data pipelines with Kafka and Kubernetes
 
How jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStaxHow jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStax
 
How jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStaxHow jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStax
 
Performance architecture for cloud connect
Performance architecture for cloud connectPerformance architecture for cloud connect
Performance architecture for cloud connect
 
Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications
 
Slow things down to make them go faster [FOSDEM 2022]
Slow things down to make them go faster [FOSDEM 2022]Slow things down to make them go faster [FOSDEM 2022]
Slow things down to make them go faster [FOSDEM 2022]
 
VMworld 2013: How SRP Delivers More Than Power to Their Customers
VMworld 2013: How SRP Delivers More Than Power to Their Customers VMworld 2013: How SRP Delivers More Than Power to Their Customers
VMworld 2013: How SRP Delivers More Than Power to Their Customers
 
KnativeCon 2022 - Knative Functions
KnativeCon 2022 - Knative FunctionsKnativeCon 2022 - Knative Functions
KnativeCon 2022 - Knative Functions
 
Lc3 beijing-june262018-sahdev zala-guangya
Lc3 beijing-june262018-sahdev zala-guangyaLc3 beijing-june262018-sahdev zala-guangya
Lc3 beijing-june262018-sahdev zala-guangya
 
TechTarget Event - Storage Architectures for the Modern Data Center - Howard ...
TechTarget Event - Storage Architectures for the Modern Data Center - Howard ...TechTarget Event - Storage Architectures for the Modern Data Center - Howard ...
TechTarget Event - Storage Architectures for the Modern Data Center - Howard ...
 
Mpls conference 2016-data center virtualisation-11-march
Mpls conference 2016-data center virtualisation-11-marchMpls conference 2016-data center virtualisation-11-march
Mpls conference 2016-data center virtualisation-11-march
 
VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right
 
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
 
Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...
Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...
Varrow Q4 Lunch & Learn Presentation - Virtualizing Business Critical Applica...
 
Presentation best practices for optimal configuration of oracle databases o...
Presentation   best practices for optimal configuration of oracle databases o...Presentation   best practices for optimal configuration of oracle databases o...
Presentation best practices for optimal configuration of oracle databases o...
 

Recently uploaded

Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid
 
Kubernetes at Scale: Going Multi-Cluster with Istio
Kubernetes at Scale:  Going Multi-Cluster  with IstioKubernetes at Scale:  Going Multi-Cluster  with Istio
Kubernetes at Scale: Going Multi-Cluster with Istio
Severalnines
 
Quarter 3 SLRP grade 9.. gshajsbhhaheabh
Quarter 3 SLRP grade 9.. gshajsbhhaheabhQuarter 3 SLRP grade 9.. gshajsbhhaheabh
Quarter 3 SLRP grade 9.. gshajsbhhaheabh
aisafed42
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Project Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdfProject Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdf
Karya Keeper
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
kalichargn70th171
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
Reetu63
 
INTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLES
INTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLESINTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLES
INTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLES
anfaltahir1010
 
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
kgyxske
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Peter Caitens
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptxMigration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
ervikas4
 

Recently uploaded (20)

Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
 
Kubernetes at Scale: Going Multi-Cluster with Istio
Kubernetes at Scale:  Going Multi-Cluster  with IstioKubernetes at Scale:  Going Multi-Cluster  with Istio
Kubernetes at Scale: Going Multi-Cluster with Istio
 
Quarter 3 SLRP grade 9.. gshajsbhhaheabh
Quarter 3 SLRP grade 9.. gshajsbhhaheabhQuarter 3 SLRP grade 9.. gshajsbhhaheabh
Quarter 3 SLRP grade 9.. gshajsbhhaheabh
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Project Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdfProject Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdf
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
 
INTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLES
INTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLESINTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLES
INTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLES
 
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptxMigration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
 

Battle of the frameworks : Quarkus vs SpringBoot

  • 1. Battle of the frameworks : Quarkus vs SpringBoot
  • 2. C1 Public 2 Introduction Georgios Andrianakis Princpal Software Engineer Red Hat Christos Sotiriou Principal Architect, Platforms Design Vodafone
  • 3. C1 Public 3 • Quarkus 3.0 released! • Expands on the existing State Of The Art infrastructure with performance improvements and new features – Hibernate ORM 6.2 – New Dev UI – Management interface – Redis Cache – Info endpoint – Pact integration • Java 11 and 17 • Jakarta EE APIs and Microprofile 6 • Perfect blending of Reactive and Imperative worlds Red Hat Quarkus: Current state
  • 4. C1 Public 4 • DXL – Digital eXperience Layer – The backbone of Vodafone’s modern digital services – Intended as a caching, high-performance middleware, but then it grew • 160+ Microservices – Reactive programming model • AWS hosting • Initially in Spring, switched early to Quarkus in 2019 – Also examined NodeJS, GoLand, plain Vert.x • DXL’s missions: Sheer API Performance and feature deliverability – Goal: 2.5 secs max API latency, previously some API calls would take 30 seconds – Achievent: 529ms average API latency Vodafone Greece: Current state
  • 5. C1 Public 5 Modern microservices middleware requirements Caching (DDS) Data holder File Management Payments Content • Enterprize integration – SOAP messages as well as REST – Fault Tolerance, high resilience – Config-first approach (12-factor applications) – Built to handle potentially big payloads • High Throughput, low boot times • Integration with cloud-native and modern systems – REST apis, MongoDB, Kubernetes, Kafka, Redis, etc • Fast development times – Good programming models, and integration with reactive frameworks • Initially chose Spring, moved to Quarkus in March 2019
  • 6. C1 Public 6 A short story January 2020 refactored MyVodafone app release: - Campaign released pointing users to the new app. - Response times suddenly peaked to ~50 seconds. One microservice was overloaded. Quarkus Deployment Spring Boot (MVC): ● 800 MB RAM ● 500 mCPUs ● Boot time: 40 seconds ● 2 - 12 replicas Slow boot times (40 seconds) resulted in slow auto-scaling in production. Quarkus (plain RESTEasy, non-reactice) ● 360 MB RAM ● 300 mCPUs ● Boot time: 12 seconds ● 2-4 replicas Faster boot times, resulted in a healthier cluster
  • 8. C1 Public Performance • Quarkus performs much better in restrictive environments – The less resources to the pod, the bigger the difference between Quarkus and Spring – Quarkus performs very well under pressure with limited resources • Quarkus is adapting faster after boot – Quarkus is reaching max throughput in less time than Spring Boot in all situations, especially with limited resources – Compile-time optimizations are probably the cause 8 0 50000 100000 150000 200000 250000 Cold app Warmed Up # Requests sustained in 30 seconds, 300mCPUs, 300MB RAM, 10 VUs Spring Boot Quarkus 0 50000 100000 150000 200000 250000 Cold app Warmed Up # Requests sustained in 30 seconds, 1CPU, 1GB RAM, 10VUs Spring Boot Quarkus 0 100000 200000 300000 400000 500000 Cold app Warmed Up # Requests sustained in 60 seconds, 300mCPUs, 300MB RAM, 30 VUs Spring Boot Quarkus • More RAM and CPU will narrow the gap • Spring, however will take more time to reach its maximum throughput than Quarkus Tests conducted on Microk8s, Running on M1 Pro, with a total of 4 cpus and 6GB total RAM
  • 9. C1 Public 9 • You will always limit your pod usage in real-life. – K8s makes better decisions with deterministic resource allocation – You will need control over your scaling and resource consumption (CPU / RAM) – You must perform tests inside containers with limited CPU and RAM • “The more you add, the slower it gets” – The more dependencies and code you add to an app, the slower it gets, especially in boot time (initial setup, setting up connections, etc) – Quarkus’ boot times increase only logarithmically – Quarkus seems to make AOT optimizations • Comparing apples-to-apples – Vodafone initially (2019) compared Quarkus non-reactive with Spring MVC – Their reactive counterparts (Resteasy Reactive and Webflux) are much faster – …but there is still a difference in performance and boot time especially in microservices with many cross-cutting concerns Performance
  • 10. C1 Public 10 • Performance is the developer’s currency – Less time on optimizations -> More time on building your business logic • Resilience – Boot times improve resilience to traffic spikes – Lower resource consumption increases the number of replicas you can run in parallel at the same time • Low resource consumption means better horizontal scaling – More replicas per microservice – Kubernetes can manage replicas with more flexibility Performance Monolith
  • 11. C1 Public Cluster Scaling (Spring Boot) 11 Low-traffic hours High Traffic hours
  • 12. C1 Public Cluster Scaling (Quarkus) 12 High Traffic hours Low-traffic hours More microservices in the same quotas allows for more aggressive scaling and faster cluster adaptiveness during high-traffic spikes
  • 13. C1 Public 13 • Hot module replacement out of the box • Microprofile specification was very simple – Filters in outbout requests – Simple Kafka and messaging implementation – Microprofile Health and Fault Tolerance proved to be great assets – Widespread adoption – Our Spring developers felt at home • Simple and lean programming model – Reactive approaches work very good • Developer-first choices – Remote development is a plus – Dev Services (added later) also sped up development • Experienced Spring developers found it very easy to migrate • Depending on the situation, dev performance improves 30% - 40% – Measured in Agile Sprints Developer Experience – Microprofile Spec
  • 14. C1 Public 14 • Why reactive? – Serve more than one operation per-thread – Allows better granularity in parallelism and i/o – It’s one of the reasons of Vodafone’s DXL’s low-latency • Requires mentality shift – Callback mechanism – Asynchronous thinking – Reactive frameworks to the rescue (Mutiny, Reactor, RxJava) • Quarkus vs Spring reactive implementations – Resteasy Reactive marries the Reactive and Imperative world perfectly – Can use both interchangeable, with little to no mentality shift – Spring needs to use a different stack altogether – One needs to use WebFlux, and loses much flexibility with context propagation and dependency injection – Spring trafeoff: Peformance vs Flexibility Developer Experience – Reactive
  • 15. C1 Public 15 • JVM perks – JVM has much higher throughput – JVM can process large quantities of data with less memory than native due to JIT – JVM is very easily debuggable – Native compilation requires a strong machine and much time • Native app Perks – Extremely low boot time – Low Resource Consumption * – … for smaller workloads – System-components (like kubernetes operators) – Useful for Lambda – Useful for short-lived components To Native or not to Native? Monolith
  • 17. C1 Public Want To know/learn/watch more? 17 • Stream processing app. with Kafka and Quarkus (12:20-13:00, MC2) • Quarkus on AWS Lambda (14:10-14:25, MC3) • Why and when to write a Quarkus extension (14:35-14:50, MC3) • Quarkus Community BOF (15:05-16:05, MC3) • Contract testing with Pact and Quarkus (16:35-17:15, MC3) • OpenId Connect and JWT Security in Quarkus (17:30-18:10, MC2) • A DXL Journey by Vodafone Greece (Friday, 15:35-15:50, MC3)