SlideShare a Scribd company logo
1 of 61
Download to read offline
Migrating
QUARKUS
Contents
1. who am i
2. what can you expect
3. what is quarkus
4. why migrate
5. migration
a. application description
b. steps
6. performance comparative
7. references
$ whoami
JUG organiser at BarcelonaJUG
Cofounder of JBCNConf ( Barcelona )
Software Engineer at Red Hat
App. Modernisation and Migration team
@vilojona
jvilalop@redhat.com
aytartana.wordpress.com
github.com/jonathanvila
What can you expect ?
My experience
v 2.2.5
v 1.7.0
opinionated option
magistral lecture
something that works
THE way
QUARKUS
Quarkus brief description
What is Quarkus ?
A Kubernetes Native, Java, Scala, Kotlin stack
tailored for GraalVM and OpenJDK HotSpot
crafted from the best of breed Java libraries and standards.
300x faster 10x smaller focused on easy to code
opensource fast paced releases tons of extensions
Quarkus key facts
Quarkus extensions ( > 90 )
Kafka
Camel
Keycloak
Spring
Vert.x
RestEasy
….
Microprofile
Openshift
Jaegger
Flyway
Hibernate
Infinispan
...
Quarkus evolution
2018-12 v 0.0.1
2019-06 v 0.15.0
2019-11 v 1.0.0 Release
2020-01 v 1.2.0
1 minor version every 2 weeks !!! (+/-)
Quarkus performance
Quarkus OSS status
Migration
Why to migrate
My experience
easy to develop with an easy CDI, REST, …
long startup times, eternal tests
heavyweight
too many things happen under the hood
easy to develop applications
fast
lightweight
GraalVM compatible
QUARKUS
✅ FaaS compatible ( lambdas )
✅ less money on public cloud
Application migrated
Spring Data ( repositories, jdbc , ... )
Spring Web ( REST )
Spring Security
Spring documentation ( Swagger )
Spring actuators
Spring micrometer
Spring CDI
Spring AOP
Spring cache
Hibernate Panache
JaxRS
Quarkus Security
OpenAPI
SmallRye Health
Microprofile Metrics
CDI Spec ( Arc )
---
Quarkus cache ( Caffeine )
QUARKUS
Elements not migrated
Spring JDBC querying
* no helper methods to work with Inserts, Updates….
* no equivalent to org.springframework.jdbc.core classes
* we need to reimplement everything using AGROAL
JMX
* not supported by GraalVM definition
CDI
● Replace Autowired by Inject
● Beans declaration using @ApplicationScoped
● Auto injection on Constructors
● Lazy by default
CDI
PROs
● straight forward migration for Beans
● no feature missing
CONs
● no annotation built-in beans
injection depending on Profile
● no private members on injection
JPA Repositories
● Repository classes to implement PanacheRepositoryBase<T, Integer>
Quarkus will generate the implementation of the usual methods :
list , find, persist, delete
JPA Repositories
PROs
● straightforward migration
CONs
● no Query DSL methods
Spring REST to JAX-RS
● Move from Spring REST to the standard JAX-RS
@RestController
@RequestMapping, @GetMapping,
@PostMapping, @PutMapping,
@DeleteMapping
@PathVariable
@Path
@GET,
@POST, @PUT
@DELETE
@PathParam
QUARKUS
Spring REST to JAX-RS
PROs
● straightforward migration
INFO
● Spring also supports JAX-RS as 3rd party lib
Spring REST Security to Quarkus Security
● replaced Spring REST Security
Spring REST JDBC Security to Elytron JDBC realm
Add extension dependency : elytron-security-jdbc
Configure on properties file and remove configureGlobal method
Spring REST Security to Quarkus security
PROs
● Almost the same result
● By configuration rather than code
CONs
● Quarkus doesn’t have an expression language
CORS
● configured CORS in the application.properties file
CORS
PROs
● easy to enable , no code involved
CONs
● at global level, not per Controller
Metrics
● Add smallRye metrics extension
● Annotate each method ( for custom metrics )
Metrics
PROs
● OpenMetrics standard naming
CONs
● different naming than micrometer
( compatibility toggle being developed )
● not the same metrics
● no AOP so you need to annotate every
method
Validation
● Spring Validation to Hibernate Validator
● Move from @ControllerAdvice to JAX-RS ExceptionMapper
Validation
PROs
● standard
● easy
CONs
● none
Swagger ( OpenAPI v 3.0 )
● Add extension “openapi”
● extend Application
Swagger ( OpenAPI v 3.0 )
PROs
● straightforward migration
● standard and easy way to configure
● Swagger-UI OOTB
CONs
● not REST paths scan configuration
AOP for app metrics
● use of microprofile metrics annotations
AOP for repository metrics
● using Hibernate built in metrics enabled in properties
AOP for app metrics
PROs
● standard
● easy to customise
CONs
● need to annotate ALL methods one by one for
custom app metrics
● no expression language to define methods affected
Local caching
● Spring uses a default ConcurrentHashMap
● Caffeine uses a ConcurrentLinkedHashMap
● Add “cache” extension ( Caffeine ) and annotate the method
Local Caching
PROs
● easy to implement and configure
● straightforward migration
CONs
● none
Test : REST
MockMVC -> RestAssured
Test REST
PROs
● RESTassured is easy to handle and very intuitive
CONs
● No way to simulate Roles without creating an user for each role to test
INFO
● Changed JSonPath to GPath
Test - resources
● Annotate test suites with @QuarkusTest to boot the app
● Annotate test suites with @QuarkusTestResource to load an embedded
resource
Test - Mock
● Use the quarkus-mockito dependency : quarkus-junit5-mockito
● Annotate mocks with @InjectMock
Spring API in Quarkus
Spring WEB ( REST) : spring-web extension
Using same Spring API for REST Supported Annotations
@RestController
@RequestMapping
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
@RequestParam
@RequestHeader
@MatrixVariable
@PathVariable
@CookieValue
@RequestBody
@ResponseStatus
@ExceptionHandler
Spring DI : spring-di extension
Using same API as Spring DI
Annotations Supported
@Autowired @Repository
@Qualifier @Scope
@Value @Component
* doesn’t support an expression language
@Configuration @Service
@Bean
Spring Data : spring-data-jpa
Using same API for Spring Data Supported
Any interface of : Repository,
CrudRepository, PagingAndSortingRepository,
JpaRepository
Derived Query Methods
User defined Queries
Not Supported
Invocations to any method of
QueryByExampleExecutor
QueryDSL
Spring Security: spring-security extension
Using same API as Spring Security
Annotations Supported
@Secured
@Preauthorized
Expressions allowed
hasAnyRole
permitAll
denyAll
isAnonymous
isAuthenticated
#paramName ==
Performance comparative (shallow)
SPRING BOOT
2.2.5
QUARKUS
Hotspot 1.8
QUARKUS
GraalVM 20.1
build
( uber-jar )
4.3 s
48 Mb
13 s
42 Mb
185 s
97 Mb
boot 6.8 s
630 Mb
2.6 s ( 3x )
251 Mb ( 2.5x )
0.462 s ( 15x )
21 Mb ( 30x )
References
Repositories
● Spring REST PetClinic
https://github.com/spring-petclinic/spring-petclinic-rest
● Quarkus REST PetClinic
https://github.com/jonathanvila/spring-petclinic-rest/tree/quarkus
Documentation/News/Help
● https://quarkus.io
● @QuarkusIO
● https://developers.redhat.com/search/?t=quarkus
● quarkus-dev@googlegroups.com
Interactive Tutorials ( Katacoda )
● https://developers.redhat.com/courses/quarkus/
List of Tutorials
● Getting Started
● For Spring Devs
● Streaming with
Kafka
● Hibernate and
Panache
● Prometeus &
Grafana
Cheat Sheet
● https://lordofthejars.github.io/quarkus-cheat-sheet/
by Alex Soto
Do you want to start coding with Quarkus ?
https://code.quarkus.io/
● Rules to help to migrate from SB to Quarkus ( MTA 5.0 )
○ Opensource tool to help on applications migrations
■ https://developers.redhat.com/products/mta/overview
■ https://github.com/windup
○ 26 rules , covering
■ DI
■ Integration
■ Metrics
■ JPA
■ Security
■ Web
■ Shell
■ ….
Red Hat MTA (Migration Toolkit for Applications)
● Rules to help to migrate from SB to Quarkus ( MTA 5.0 )
○ Opensource tool to help on applications migrations
■ https://developers.redhat.com/products/mta/overview
■ https://github.com/windup
○ 26 rules , covering
■ DI
■ Integration
■ Metrics
■ JPA
■ Security
■ Web
■ Shell
■ ….
Red Hat MTA (Migration Toolkit for Applications)
● Rules to help to migrate from SB to Quarkus ( MTA 5.0 )
○ Opensource tool to help on applications migrations
■ https://developers.redhat.com/products/mta/overview
■ https://github.com/windup
○ 26 rules , covering
■ DI
■ Integration
■ Metrics
■ JPA
■ Security
■ Web
■ Shell
■ ….
Red Hat MTA (Migration Toolkit for Applications)
● Rules to help to migrate from SB to Quarkus ( MTA 5.0 )
○ Opensource tool to help on applications migrations
■ https://developers.redhat.com/products/mta/overview
■ https://github.com/windup
○ 26 rules , covering
■ DI
■ Integration
■ Metrics
■ JPA
■ Security
■ Web
■ Shell
■ ….
○ Plugin for Eclipse (Che), VSCode
Red Hat MTA (Migration Toolkit for Applications)
● Rules to help to migrate from SB to Quarkus ( MTA 5.0 )
○ Opensource tool to help on applications migrations
■ https://developers.redhat.com/products/mta/overview
■ https://github.com/windup
○ 26 rules , covering
■ DI
■ Integration
■ Metrics
■ JPA
■ Security
■ Web
■ Shell
■ ….
Red Hat MTA (Migration Toolkit for Applications)
● Rules to help to migrate from SB to Quarkus ( MTA 5.0 )
○ Opensource tool to help on applications migrations
■ https://developers.redhat.com/products/mta/overview
■ https://github.com/windup
○ 26 rules , covering
■ DI
■ Integration
■ Metrics
■ JPA
■ Security
■ Web
■ Shell
■ ….
○ Plugin for Eclipse (Che), VSCode
Red Hat MTA (Migration Toolkit for Applications)
Real use cases
Lufthansa Technik AVIATAR experiences significant cloud resources
savings by moving to Kubernetes-native Quarkus (link)
Suomen Asiakastieto Oy chooses Quarkus for their microservices
development (link)
Vodafone Greece replaces Spring Boot with Quarkus (link)
● “Quarkus offers by default (without trying to optimize it) is 50%-60% more
lightweight (in JVM mode) that what Spring offers”
● “30 to 40% better developer productivity vis-a-vis Spring Boot,”
Public Clouds exp.
-- Internal Labs ---
Save up to :
● 37 % on Cloud ( Quarkus JVM )
● 71 % on Cloud ( Quarkus + GraalVM )
Books ( devs not only consume tech )
Sci FyMindNovel
@vilojona
jvilalop@redhat.com
aytartana.wordpress.com
github.com/jonathanvila
Thank you :)

More Related Content

What's hot

[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要Google Cloud Platform - Japan
 
AWS Black Belt Online Seminar 2017 Auto Scaling
AWS Black Belt Online Seminar 2017 Auto ScalingAWS Black Belt Online Seminar 2017 Auto Scaling
AWS Black Belt Online Seminar 2017 Auto ScalingAmazon Web Services Japan
 
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)NTT DATA Technology & Innovation
 
Azure Cosmos DB のキホンと使いドコロ
Azure Cosmos DB のキホンと使いドコロAzure Cosmos DB のキホンと使いドコロ
Azure Cosmos DB のキホンと使いドコロKazuyuki Miyake
 
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)NTT DATA Technology & Innovation
 
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon CognitoAmazon Web Services Japan
 
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングオラクルエンジニア通信
 
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Hiroyuki Wada
 
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]オラクルエンジニア通信
 
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践日本マイクロソフト株式会社
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCdisc99_
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQLAmazon Web Services Japan
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)Trainocate Japan, Ltd.
 
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)オラクルエンジニア通信
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)NTT DATA Technology & Innovation
 

What's hot (20)

Oracle GoldenGate導入Tips
Oracle GoldenGate導入TipsOracle GoldenGate導入Tips
Oracle GoldenGate導入Tips
 
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
 
AWS Black Belt Online Seminar 2017 Auto Scaling
AWS Black Belt Online Seminar 2017 Auto ScalingAWS Black Belt Online Seminar 2017 Auto Scaling
AWS Black Belt Online Seminar 2017 Auto Scaling
 
Helidon 概要
Helidon 概要Helidon 概要
Helidon 概要
 
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
 
Azure Cosmos DB のキホンと使いドコロ
Azure Cosmos DB のキホンと使いドコロAzure Cosmos DB のキホンと使いドコロ
Azure Cosmos DB のキホンと使いドコロ
 
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
 
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito
 
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
 
噛み砕いてKafka Streams #kafkajp
噛み砕いてKafka Streams #kafkajp噛み砕いてKafka Streams #kafkajp
噛み砕いてKafka Streams #kafkajp
 
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
 
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2021年7月版]
 
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
 
Oracle GoldenGate アーキテクチャと基本機能
Oracle GoldenGate アーキテクチャと基本機能Oracle GoldenGate アーキテクチャと基本機能
Oracle GoldenGate アーキテクチャと基本機能
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 

Similar to Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk

Migration Spring Boot PetClinic REST to Quarkus 1.2.0
Migration Spring Boot PetClinic REST to Quarkus 1.2.0Migration Spring Boot PetClinic REST to Quarkus 1.2.0
Migration Spring Boot PetClinic REST to Quarkus 1.2.0Jonathan Vila
 
Migration Spring PetClinic to Quarkus
Migration Spring PetClinic to QuarkusMigration Spring PetClinic to Quarkus
Migration Spring PetClinic to QuarkusJonathan Vila
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfLuca Mattia Ferrari
 
[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1Rubens Dos Santos Filho
 
Modern application development with oracle cloud sangam17
Modern application development with oracle cloud sangam17Modern application development with oracle cloud sangam17
Modern application development with oracle cloud sangam17Vinay Kumar
 
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021William Caban
 
FIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart SystemsFIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart SystemsFIWARE
 
Web Scale Reasoning and the LarKC Project
Web Scale Reasoning and the LarKC ProjectWeb Scale Reasoning and the LarKC Project
Web Scale Reasoning and the LarKC ProjectSaltlux Inc.
 
Streaming Processing with a Distributed Commit Log
Streaming Processing with a Distributed Commit LogStreaming Processing with a Distributed Commit Log
Streaming Processing with a Distributed Commit LogJoe Stein
 
Top 10 Kubernetes Native Java Quarkus Features
Top 10 Kubernetes Native Java Quarkus FeaturesTop 10 Kubernetes Native Java Quarkus Features
Top 10 Kubernetes Native Java Quarkus Featuresjclingan
 
Django deployment with PaaS
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaSAppsembler
 
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]Leonardo Zanivan
 
Introduction to Eclipse Microprofile
Introduction to Eclipse MicroprofileIntroduction to Eclipse Microprofile
Introduction to Eclipse MicroprofileRed Hat Developers
 
Context-aware Fast Food Recommendation with Ray on Apache Spark at Burger King
Context-aware Fast Food Recommendation with Ray on Apache Spark at Burger KingContext-aware Fast Food Recommendation with Ray on Apache Spark at Burger King
Context-aware Fast Food Recommendation with Ray on Apache Spark at Burger KingDatabricks
 
Java @ Cloud - Setor Público SP
Java @ Cloud - Setor Público SPJava @ Cloud - Setor Público SP
Java @ Cloud - Setor Público SPIlan Salviano
 
PaaSTA: Running applications at Yelp
PaaSTA: Running applications at YelpPaaSTA: Running applications at Yelp
PaaSTA: Running applications at YelpNathan Handler
 
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019UA DevOps Conference
 
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020Matt Raible
 
Real World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.xReal World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.xSascha Möllering
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017Patrick Chanezon
 

Similar to Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk (20)

Migration Spring Boot PetClinic REST to Quarkus 1.2.0
Migration Spring Boot PetClinic REST to Quarkus 1.2.0Migration Spring Boot PetClinic REST to Quarkus 1.2.0
Migration Spring Boot PetClinic REST to Quarkus 1.2.0
 
Migration Spring PetClinic to Quarkus
Migration Spring PetClinic to QuarkusMigration Spring PetClinic to Quarkus
Migration Spring PetClinic to Quarkus
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdf
 
[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1
 
Modern application development with oracle cloud sangam17
Modern application development with oracle cloud sangam17Modern application development with oracle cloud sangam17
Modern application development with oracle cloud sangam17
 
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
 
FIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart SystemsFIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart Systems
 
Web Scale Reasoning and the LarKC Project
Web Scale Reasoning and the LarKC ProjectWeb Scale Reasoning and the LarKC Project
Web Scale Reasoning and the LarKC Project
 
Streaming Processing with a Distributed Commit Log
Streaming Processing with a Distributed Commit LogStreaming Processing with a Distributed Commit Log
Streaming Processing with a Distributed Commit Log
 
Top 10 Kubernetes Native Java Quarkus Features
Top 10 Kubernetes Native Java Quarkus FeaturesTop 10 Kubernetes Native Java Quarkus Features
Top 10 Kubernetes Native Java Quarkus Features
 
Django deployment with PaaS
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaS
 
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
 
Introduction to Eclipse Microprofile
Introduction to Eclipse MicroprofileIntroduction to Eclipse Microprofile
Introduction to Eclipse Microprofile
 
Context-aware Fast Food Recommendation with Ray on Apache Spark at Burger King
Context-aware Fast Food Recommendation with Ray on Apache Spark at Burger KingContext-aware Fast Food Recommendation with Ray on Apache Spark at Burger King
Context-aware Fast Food Recommendation with Ray on Apache Spark at Burger King
 
Java @ Cloud - Setor Público SP
Java @ Cloud - Setor Público SPJava @ Cloud - Setor Público SP
Java @ Cloud - Setor Público SP
 
PaaSTA: Running applications at Yelp
PaaSTA: Running applications at YelpPaaSTA: Running applications at Yelp
PaaSTA: Running applications at Yelp
 
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
 
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
 
Real World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.xReal World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.x
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017
 

More from Red Hat Developers

DevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsDevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsRed Hat Developers
 
Exploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on KubernetesExploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on KubernetesRed Hat Developers
 
GitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkGitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkRed Hat Developers
 
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkQuinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkRed Hat Developers
 
Extra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkExtra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkRed Hat Developers
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Red Hat Developers
 
Integrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkIntegrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkRed Hat Developers
 
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Red Hat Developers
 
Containers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkContainers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkRed Hat Developers
 
Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Red Hat Developers
 
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...Red Hat Developers
 
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Red Hat Developers
 
11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech TalkRed Hat Developers
 
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkA Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkRed Hat Developers
 
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...Red Hat Developers
 
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkTo the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkRed Hat Developers
 
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Red Hat Developers
 
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Red Hat Developers
 
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Red Hat Developers
 
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkLevel-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkRed Hat Developers
 

More from Red Hat Developers (20)

DevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsDevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOps
 
Exploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on KubernetesExploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on Kubernetes
 
GitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkGitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech Talk
 
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkQuinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
 
Extra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkExtra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech Talk
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
 
Integrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkIntegrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech Talk
 
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
 
Containers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkContainers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech Talk
 
Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...
 
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
 
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
 
11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk
 
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkA Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
 
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
 
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkTo the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
 
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
 
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
 
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
 
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkLevel-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
 

Recently uploaded

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Recently uploaded (20)

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk

  • 2. Contents 1. who am i 2. what can you expect 3. what is quarkus 4. why migrate 5. migration a. application description b. steps 6. performance comparative 7. references
  • 3. $ whoami JUG organiser at BarcelonaJUG Cofounder of JBCNConf ( Barcelona ) Software Engineer at Red Hat App. Modernisation and Migration team @vilojona jvilalop@redhat.com aytartana.wordpress.com github.com/jonathanvila
  • 4. What can you expect ? My experience v 2.2.5 v 1.7.0 opinionated option magistral lecture something that works THE way QUARKUS
  • 6. What is Quarkus ? A Kubernetes Native, Java, Scala, Kotlin stack tailored for GraalVM and OpenJDK HotSpot crafted from the best of breed Java libraries and standards.
  • 7. 300x faster 10x smaller focused on easy to code opensource fast paced releases tons of extensions Quarkus key facts
  • 8. Quarkus extensions ( > 90 ) Kafka Camel Keycloak Spring Vert.x RestEasy …. Microprofile Openshift Jaegger Flyway Hibernate Infinispan ...
  • 9. Quarkus evolution 2018-12 v 0.0.1 2019-06 v 0.15.0 2019-11 v 1.0.0 Release 2020-01 v 1.2.0 1 minor version every 2 weeks !!! (+/-)
  • 13. Why to migrate My experience easy to develop with an easy CDI, REST, … long startup times, eternal tests heavyweight too many things happen under the hood easy to develop applications fast lightweight GraalVM compatible QUARKUS ✅ FaaS compatible ( lambdas ) ✅ less money on public cloud
  • 14. Application migrated Spring Data ( repositories, jdbc , ... ) Spring Web ( REST ) Spring Security Spring documentation ( Swagger ) Spring actuators Spring micrometer Spring CDI Spring AOP Spring cache Hibernate Panache JaxRS Quarkus Security OpenAPI SmallRye Health Microprofile Metrics CDI Spec ( Arc ) --- Quarkus cache ( Caffeine ) QUARKUS
  • 15. Elements not migrated Spring JDBC querying * no helper methods to work with Inserts, Updates…. * no equivalent to org.springframework.jdbc.core classes * we need to reimplement everything using AGROAL JMX * not supported by GraalVM definition
  • 16. CDI ● Replace Autowired by Inject ● Beans declaration using @ApplicationScoped ● Auto injection on Constructors ● Lazy by default
  • 17. CDI PROs ● straight forward migration for Beans ● no feature missing CONs ● no annotation built-in beans injection depending on Profile ● no private members on injection
  • 18. JPA Repositories ● Repository classes to implement PanacheRepositoryBase<T, Integer> Quarkus will generate the implementation of the usual methods : list , find, persist, delete
  • 19. JPA Repositories PROs ● straightforward migration CONs ● no Query DSL methods
  • 20. Spring REST to JAX-RS ● Move from Spring REST to the standard JAX-RS @RestController @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping @PathVariable @Path @GET, @POST, @PUT @DELETE @PathParam QUARKUS
  • 21. Spring REST to JAX-RS PROs ● straightforward migration INFO ● Spring also supports JAX-RS as 3rd party lib
  • 22. Spring REST Security to Quarkus Security ● replaced Spring REST Security
  • 23. Spring REST JDBC Security to Elytron JDBC realm Add extension dependency : elytron-security-jdbc Configure on properties file and remove configureGlobal method
  • 24. Spring REST Security to Quarkus security PROs ● Almost the same result ● By configuration rather than code CONs ● Quarkus doesn’t have an expression language
  • 25. CORS ● configured CORS in the application.properties file
  • 26. CORS PROs ● easy to enable , no code involved CONs ● at global level, not per Controller
  • 27. Metrics ● Add smallRye metrics extension ● Annotate each method ( for custom metrics )
  • 28. Metrics PROs ● OpenMetrics standard naming CONs ● different naming than micrometer ( compatibility toggle being developed ) ● not the same metrics ● no AOP so you need to annotate every method
  • 29. Validation ● Spring Validation to Hibernate Validator ● Move from @ControllerAdvice to JAX-RS ExceptionMapper
  • 31. Swagger ( OpenAPI v 3.0 ) ● Add extension “openapi” ● extend Application
  • 32. Swagger ( OpenAPI v 3.0 ) PROs ● straightforward migration ● standard and easy way to configure ● Swagger-UI OOTB CONs ● not REST paths scan configuration
  • 33. AOP for app metrics ● use of microprofile metrics annotations
  • 34. AOP for repository metrics ● using Hibernate built in metrics enabled in properties
  • 35. AOP for app metrics PROs ● standard ● easy to customise CONs ● need to annotate ALL methods one by one for custom app metrics ● no expression language to define methods affected
  • 36. Local caching ● Spring uses a default ConcurrentHashMap ● Caffeine uses a ConcurrentLinkedHashMap ● Add “cache” extension ( Caffeine ) and annotate the method
  • 37. Local Caching PROs ● easy to implement and configure ● straightforward migration CONs ● none
  • 38. Test : REST MockMVC -> RestAssured
  • 39. Test REST PROs ● RESTassured is easy to handle and very intuitive CONs ● No way to simulate Roles without creating an user for each role to test INFO ● Changed JSonPath to GPath
  • 40. Test - resources ● Annotate test suites with @QuarkusTest to boot the app ● Annotate test suites with @QuarkusTestResource to load an embedded resource
  • 41. Test - Mock ● Use the quarkus-mockito dependency : quarkus-junit5-mockito ● Annotate mocks with @InjectMock
  • 42. Spring API in Quarkus
  • 43. Spring WEB ( REST) : spring-web extension Using same Spring API for REST Supported Annotations @RestController @RequestMapping @GetMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping @RequestParam @RequestHeader @MatrixVariable @PathVariable @CookieValue @RequestBody @ResponseStatus @ExceptionHandler
  • 44. Spring DI : spring-di extension Using same API as Spring DI Annotations Supported @Autowired @Repository @Qualifier @Scope @Value @Component * doesn’t support an expression language @Configuration @Service @Bean
  • 45. Spring Data : spring-data-jpa Using same API for Spring Data Supported Any interface of : Repository, CrudRepository, PagingAndSortingRepository, JpaRepository Derived Query Methods User defined Queries Not Supported Invocations to any method of QueryByExampleExecutor QueryDSL
  • 46. Spring Security: spring-security extension Using same API as Spring Security Annotations Supported @Secured @Preauthorized Expressions allowed hasAnyRole permitAll denyAll isAnonymous isAuthenticated #paramName ==
  • 47. Performance comparative (shallow) SPRING BOOT 2.2.5 QUARKUS Hotspot 1.8 QUARKUS GraalVM 20.1 build ( uber-jar ) 4.3 s 48 Mb 13 s 42 Mb 185 s 97 Mb boot 6.8 s 630 Mb 2.6 s ( 3x ) 251 Mb ( 2.5x ) 0.462 s ( 15x ) 21 Mb ( 30x )
  • 49. Repositories ● Spring REST PetClinic https://github.com/spring-petclinic/spring-petclinic-rest ● Quarkus REST PetClinic https://github.com/jonathanvila/spring-petclinic-rest/tree/quarkus Documentation/News/Help ● https://quarkus.io ● @QuarkusIO ● https://developers.redhat.com/search/?t=quarkus ● quarkus-dev@googlegroups.com
  • 50. Interactive Tutorials ( Katacoda ) ● https://developers.redhat.com/courses/quarkus/ List of Tutorials ● Getting Started ● For Spring Devs ● Streaming with Kafka ● Hibernate and Panache ● Prometeus & Grafana
  • 52. Do you want to start coding with Quarkus ? https://code.quarkus.io/
  • 53. ● Rules to help to migrate from SB to Quarkus ( MTA 5.0 ) ○ Opensource tool to help on applications migrations ■ https://developers.redhat.com/products/mta/overview ■ https://github.com/windup ○ 26 rules , covering ■ DI ■ Integration ■ Metrics ■ JPA ■ Security ■ Web ■ Shell ■ …. Red Hat MTA (Migration Toolkit for Applications)
  • 54. ● Rules to help to migrate from SB to Quarkus ( MTA 5.0 ) ○ Opensource tool to help on applications migrations ■ https://developers.redhat.com/products/mta/overview ■ https://github.com/windup ○ 26 rules , covering ■ DI ■ Integration ■ Metrics ■ JPA ■ Security ■ Web ■ Shell ■ …. Red Hat MTA (Migration Toolkit for Applications)
  • 55. ● Rules to help to migrate from SB to Quarkus ( MTA 5.0 ) ○ Opensource tool to help on applications migrations ■ https://developers.redhat.com/products/mta/overview ■ https://github.com/windup ○ 26 rules , covering ■ DI ■ Integration ■ Metrics ■ JPA ■ Security ■ Web ■ Shell ■ …. Red Hat MTA (Migration Toolkit for Applications)
  • 56. ● Rules to help to migrate from SB to Quarkus ( MTA 5.0 ) ○ Opensource tool to help on applications migrations ■ https://developers.redhat.com/products/mta/overview ■ https://github.com/windup ○ 26 rules , covering ■ DI ■ Integration ■ Metrics ■ JPA ■ Security ■ Web ■ Shell ■ …. ○ Plugin for Eclipse (Che), VSCode Red Hat MTA (Migration Toolkit for Applications)
  • 57. ● Rules to help to migrate from SB to Quarkus ( MTA 5.0 ) ○ Opensource tool to help on applications migrations ■ https://developers.redhat.com/products/mta/overview ■ https://github.com/windup ○ 26 rules , covering ■ DI ■ Integration ■ Metrics ■ JPA ■ Security ■ Web ■ Shell ■ …. Red Hat MTA (Migration Toolkit for Applications)
  • 58. ● Rules to help to migrate from SB to Quarkus ( MTA 5.0 ) ○ Opensource tool to help on applications migrations ■ https://developers.redhat.com/products/mta/overview ■ https://github.com/windup ○ 26 rules , covering ■ DI ■ Integration ■ Metrics ■ JPA ■ Security ■ Web ■ Shell ■ …. ○ Plugin for Eclipse (Che), VSCode Red Hat MTA (Migration Toolkit for Applications)
  • 59. Real use cases Lufthansa Technik AVIATAR experiences significant cloud resources savings by moving to Kubernetes-native Quarkus (link) Suomen Asiakastieto Oy chooses Quarkus for their microservices development (link) Vodafone Greece replaces Spring Boot with Quarkus (link) ● “Quarkus offers by default (without trying to optimize it) is 50%-60% more lightweight (in JVM mode) that what Spring offers” ● “30 to 40% better developer productivity vis-a-vis Spring Boot,” Public Clouds exp. -- Internal Labs --- Save up to : ● 37 % on Cloud ( Quarkus JVM ) ● 71 % on Cloud ( Quarkus + GraalVM )
  • 60. Books ( devs not only consume tech ) Sci FyMindNovel