@nicolas_frankel
Shorten all URLs:
Quarkus, Kotlin,
Hazelcast and GraalVM
Nicolas Fränkel
@nicolas_frankel
Me, myself and I
 Former developer, team lead, architect,
blah-blah
 Developer Advocate
@nicolas_frankel
Hazelcast
HAZELCAST IMDG is an operational,
in-memory, distributed computing
platform that manages data using
in-memory storage and performs
execution for breakthrough
and scale.
HAZELCAST JET is the ultra
fast, application embeddable,
3rd generation stream
processing engine for low
latency batch and stream
processing.
@nicolas_frankel
The Cloud “Gold” Rush
@nicolas_frankel
Why the Cloud?
1. Cost management
2. Flexibility
• “You pay for what you use”
@nicolas_frankel
The way to the Cloud
1. “Lift and shift”
2. “Rewrite all the things”
3. The middle path?
@nicolas_frankel
Lift and Shift
 The Cloud is just somebody else’s
computer
 Relatively easy
• “Just” containerize the app
 Run can be (a lot) more expensive than
on-premise!
• Worst case, all hell breaks loose
@nicolas_frankel
12-factors app
1. There should be exactly one codebase for a deployed service with the
codebase being used for many deployments.
2. All dependencies should be declared, with no implicit reliance on system
tools or libraries.
3. Configuration that varies between deployments should be stored in the
environment.
4. All backing services are treated as attached resources and attached
and detached by the execution environment.
5. The delivery pipeline should strictly consist of build, release, run.
6. Applications should be deployed as one or more stateless processes with
persisted data stored on a backing service.
@nicolas_frankel
12-factors app
7. Self-contained services should make themselves available to other
services by specified ports.
8. Concurrency is advocated by scaling individual processes.
9. Fast startup and shutdown are advocated for a more robust and
resilient system.
10. All environments should be as similar as possible.
11. Applications should produce logs as event streams and leave the
execution environment to aggregate.
12. Any needed admin tasks should be kept in source control and packaged
with the application.
@nicolas_frankel
A “standard” JVM web application
# Factor Issue
2 Declared deps App server is a dependency that is not
provided
3 Configuration Application server dependent
9 Fast startup The JVM takes a long time to startup
10 Streaming logs Write in different files
@nicolas_frankel
More startup performance hits from frameworks
Reflection Classpath scanning
@nicolas_frankel
Rewrite the app
1. Cost
2. Delay
3. Risks
4. Team organization
@nicolas_frankel
The middle path
 Reuse existing code
• e.g. annotations from Spring/Java EE
 Change the way they are used
@nicolas_frankel
GraalVM
 JVM platform by Oracle
 Polyglot
• Java, Python, JavaScript, R, Ruby, C
 Truffle
• Programming Language
implementation framework
@nicolas_frankel
Substrate VM
 Create native executables from bytecode
 Ahead-Of-Time compilation
 Some limitations
• Needs to be configured for traditional
reflection
• Not cross-platform
• etc.
@nicolas_frankel
JVM vs. native executable
JVM Native
Memory consumption +++ +
Startup time +++ +
Write Once Run Everywhere ✓ ✘
Adapt to the workload ✓ ✘
@nicolas_frankel
Common approaches
1. GraalVM native-image friendly
2. Build-time reflection generation
@nicolas_frankel
“Cloud-native” frameworks
( )
@nicolas_frankel
The use-case: a URL shortener
 Traditional approach
• Create a bijection between
⁃ Space(URL)
⁃ Space(short)
• Collisions handling
@nicolas_frankel
URL shortener: alternative approach
 Generate random short links
 Re-generate if already existing
 Store mappings
 Trade-off: CPU time vs. storage
@nicolas_frankel
Stack
 Legacy Java EE application
 Written in Kotlin
 Using JAX-RS
 Storing data in Hazelcast IMDG
@nicolas_frankel
AS-IS state
@nicolas_frankel
TO-BE state - Development
@nicolas_frankel
TO-BE state - Production
@nicolas_frankel
Talk is cheap, show me the code!
@nicolas_frankel
Recap: walk the middle path when possible
 Use existing code
 Use frameworks that know how to
leverage previous framework’s code
 Better ROI 4TW!
@nicolas_frankel
Thanks for your attention!
 https://blog.frankel.ch/
 @nicolas_frankel
 https://bit.ly/quarkus-hazelcast
 https://bit.ly/url-shrtnr

More Related Content

PDF
Kafka Summit SF 2017 - Running Kafka as a Service at Scale
PPTX
London Java Community - An Experiment in Continuous Deployment of JVM applica...
PPTX
AllTheTalks.online - A Streaming Use-Case: And Experiment in Continuous Deplo...
PDF
Using SLOs for Continuous Performance Optimizations of Your k8s Workloads
PDF
Building Reactive applications with Akka
PPTX
BDM37 - Simon Grondin - Scaling an API proxy in OCaml
PPTX
Demystifying flink memory allocation and tuning - Roshan Naik, Uber
PPTX
Portable Streaming Pipelines with Apache Beam
Kafka Summit SF 2017 - Running Kafka as a Service at Scale
London Java Community - An Experiment in Continuous Deployment of JVM applica...
AllTheTalks.online - A Streaming Use-Case: And Experiment in Continuous Deplo...
Using SLOs for Continuous Performance Optimizations of Your k8s Workloads
Building Reactive applications with Akka
BDM37 - Simon Grondin - Scaling an API proxy in OCaml
Demystifying flink memory allocation and tuning - Roshan Naik, Uber
Portable Streaming Pipelines with Apache Beam

What's hot (20)

PDF
Flink Forward San Francisco 2019: High cardinality data stream processing wit...
PPTX
How to deploy your Apps in serverless-way using App Engine.pptx
PDF
DevOps For Solo Developers
PDF
A Streaming Platform Architecture Based on Apache Kafka
PDF
Five Workload-to-Cloud Migration Methods
PPTX
Tech trends 2018 2019
PDF
Russell spring one2gx_messaging_india
PDF
Infrastructure as Code using Deployment Manager and Kubernetes
PDF
PuppetConf 2016 Customer Keynote: Cloud, Containers & the Impact on IT - Jeff...
PDF
Flink Forward Berlin 2017: Steffen Hausmann - Build a Real-time Stream Proces...
PPTX
TechWiseTV Workshop: Open NX-OS and Devops with Puppet Labs
PPTX
Jenkins scaling best practices
PPTX
Inlining Heuristics
PPTX
Chaos engineering with Litmus Chaos Framework
PPTX
PDF
Stateful stream processing with Apache Flink
PPTX
DotNext 2017 in Moscow - .NET Core Networking stack and Performance -- Karel ...
PDF
Lunar Way and the Cloud Native "stack"
PDF
Architecting for Failure in a Containerized World
Flink Forward San Francisco 2019: High cardinality data stream processing wit...
How to deploy your Apps in serverless-way using App Engine.pptx
DevOps For Solo Developers
A Streaming Platform Architecture Based on Apache Kafka
Five Workload-to-Cloud Migration Methods
Tech trends 2018 2019
Russell spring one2gx_messaging_india
Infrastructure as Code using Deployment Manager and Kubernetes
PuppetConf 2016 Customer Keynote: Cloud, Containers & the Impact on IT - Jeff...
Flink Forward Berlin 2017: Steffen Hausmann - Build a Real-time Stream Proces...
TechWiseTV Workshop: Open NX-OS and Devops with Puppet Labs
Jenkins scaling best practices
Inlining Heuristics
Chaos engineering with Litmus Chaos Framework
Stateful stream processing with Apache Flink
DotNext 2017 in Moscow - .NET Core Networking stack and Performance -- Karel ...
Lunar Way and the Cloud Native "stack"
Architecting for Failure in a Containerized World
Ad

Similar to OSCONF Hyderabad - Shorten all URLs! (20)

PDF
Shorten All URLs
PPTX
Are you ready for cloud-native Java?
PDF
Quarkus Denmark 2019
PDF
stackconf 2020 | Real Continuous Deployment of JVM applications by Nicolas Fr...
PDF
Red Hat Java Update and Quarkus Introduction
PDF
Reactive Amsterdam - Maxim Burgerhout - Quarkus Intro
PPTX
Are you ready for cloud-native java JavaCro2019
PDF
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
PDF
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
PPTX
JCON_15FactorWorkshop.pptx
PDF
Quarkus - a next-generation Kubernetes Native Java framework
PPTX
Discover Quarkus and GraalVM
PDF
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
PDF
Developing Open Cloud Native Microservices Your Java Code In Actioncompliment...
PPTX
CNCF Live Webinar: Low Footprint Java Containers with GraalVM
PDF
D. Andreadis, Red Hat: Concepts and technical overview of Quarkus
PPTX
ConFoo - 3 performance improvements
PPTX
Hazelcast Jet v0.4 - August 9, 2017
PDF
GraalVm and Quarkus
PDF
Starting from scratch in 2017
Shorten All URLs
Are you ready for cloud-native Java?
Quarkus Denmark 2019
stackconf 2020 | Real Continuous Deployment of JVM applications by Nicolas Fr...
Red Hat Java Update and Quarkus Introduction
Reactive Amsterdam - Maxim Burgerhout - Quarkus Intro
Are you ready for cloud-native java JavaCro2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
JCON_15FactorWorkshop.pptx
Quarkus - a next-generation Kubernetes Native Java framework
Discover Quarkus and GraalVM
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Developing Open Cloud Native Microservices Your Java Code In Actioncompliment...
CNCF Live Webinar: Low Footprint Java Containers with GraalVM
D. Andreadis, Red Hat: Concepts and technical overview of Quarkus
ConFoo - 3 performance improvements
Hazelcast Jet v0.4 - August 9, 2017
GraalVm and Quarkus
Starting from scratch in 2017
Ad

More from Nicolas Fränkel (20)

PPTX
SnowCamp - Adding search to a legacy application
PPTX
Un CV de dévelopeur toujours a jour
PPTX
Zero-downtime deployment on Kubernetes with Hazelcast
PDF
jLove - A Change-Data-Capture use-case: designing an evergreen cache
PPTX
BigData conference - Introduction to stream processing
PPTX
ADDO - Your own Kubernetes controller, not only in Go
PPTX
TestCon Europe - Mutation Testing to the Rescue of Your Tests
PPTX
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
PPTX
GeekcampSG 2020 - A Change-Data-Capture use-case: designing an evergreen cache
PPTX
JavaDay Istanbul - 3 improvements in your microservices architecture
PPTX
Devclub.lv - Introduction to stream processing
PPTX
OSCONF Koshi - Zero downtime deployment with Kubernetes, Flyway and Spring Boot
PPTX
JOnConf - A CDC use-case: designing an Evergreen Cache
PPTX
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
PPTX
JUG Tirana - Introduction to data streaming
PPTX
Java.IL - Your own Kubernetes controller, not only in Go!
PPTX
vJUG - Introduction to data streaming
PPTX
OSCONF - Your own Kubernetes controller: not only in Go
PPTX
vKUG - Migrating Spring Boot apps from annotation-based config to Functional
PPTX
Tech talks - 3 performance improvements
SnowCamp - Adding search to a legacy application
Un CV de dévelopeur toujours a jour
Zero-downtime deployment on Kubernetes with Hazelcast
jLove - A Change-Data-Capture use-case: designing an evergreen cache
BigData conference - Introduction to stream processing
ADDO - Your own Kubernetes controller, not only in Go
TestCon Europe - Mutation Testing to the Rescue of Your Tests
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
GeekcampSG 2020 - A Change-Data-Capture use-case: designing an evergreen cache
JavaDay Istanbul - 3 improvements in your microservices architecture
Devclub.lv - Introduction to stream processing
OSCONF Koshi - Zero downtime deployment with Kubernetes, Flyway and Spring Boot
JOnConf - A CDC use-case: designing an Evergreen Cache
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
JUG Tirana - Introduction to data streaming
Java.IL - Your own Kubernetes controller, not only in Go!
vJUG - Introduction to data streaming
OSCONF - Your own Kubernetes controller: not only in Go
vKUG - Migrating Spring Boot apps from annotation-based config to Functional
Tech talks - 3 performance improvements

Recently uploaded (20)

PPTX
HackYourBrain__UtrechtJUG__11092025.pptx
PDF
Lumion Pro Crack New latest version Download 2025
PDF
Understanding the Need for Systemic Change in Open Source Through Intersectio...
PDF
Cloud Native Aachen Meetup - Aug 21, 2025
PPTX
Plex Media Server 1.28.2.6151 With Crac5 2022 Free .
PPT
3.Software Design for software engineering
PDF
Streamlining Project Management in Microsoft Project, Planner, and Teams with...
PPTX
Lesson-3-Operation-System-Support.pptx-I
PPTX
Human-Computer Interaction for Lecture 1
PPTX
Bandicam Screen Recorder 8.2.1 Build 2529 Crack
PPTX
string python Python Strings: Literals, Slicing, Methods, Formatting, and Pra...
PPTX
Chapter 1 - Transaction Processing and Mgt.pptx
PPTX
Human Computer Interaction lecture Chapter 2.pptx
PDF
infoteam HELLAS company profile 2025 presentation
PDF
Sun and Bloombase Spitfire StoreSafe End-to-end Storage Security Solution
PPTX
Streamlining Project Management in the AV Industry with D-Tools for Zoho CRM ...
PPTX
Lecture 5 Software Requirement Engineering
PDF
PDF-XChange Editor Plus 10.7.0.398.0 Crack Free Download Latest 2025
PDF
Practical Indispensable Project Management Tips for Delivering Successful Exp...
PPTX
Folder Lock 10.1.9 Crack With Serial Key
HackYourBrain__UtrechtJUG__11092025.pptx
Lumion Pro Crack New latest version Download 2025
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Cloud Native Aachen Meetup - Aug 21, 2025
Plex Media Server 1.28.2.6151 With Crac5 2022 Free .
3.Software Design for software engineering
Streamlining Project Management in Microsoft Project, Planner, and Teams with...
Lesson-3-Operation-System-Support.pptx-I
Human-Computer Interaction for Lecture 1
Bandicam Screen Recorder 8.2.1 Build 2529 Crack
string python Python Strings: Literals, Slicing, Methods, Formatting, and Pra...
Chapter 1 - Transaction Processing and Mgt.pptx
Human Computer Interaction lecture Chapter 2.pptx
infoteam HELLAS company profile 2025 presentation
Sun and Bloombase Spitfire StoreSafe End-to-end Storage Security Solution
Streamlining Project Management in the AV Industry with D-Tools for Zoho CRM ...
Lecture 5 Software Requirement Engineering
PDF-XChange Editor Plus 10.7.0.398.0 Crack Free Download Latest 2025
Practical Indispensable Project Management Tips for Delivering Successful Exp...
Folder Lock 10.1.9 Crack With Serial Key

OSCONF Hyderabad - Shorten all URLs!

Editor's Notes

  • #23: @startuml database "Hazelcast IMDG" as hz actor User as user node "JVM" { node "Tomcat" { interface HTTP artifact "application.war" { control "Controller" as ctrl artifact "hazelcast-client.jar" as hzclient } artifact "servlet.jar" as servlet artifact "jax-rs.jar" as jaxrs artifact "catalina.jar" as catalina } } user -right-> HTTP HTTP -down- catalina catalina - ctrl ctrl - hzclient hzclient - hz ctrl .down.> servlet catalina .down.> servlet ctrl .down.> jaxrs catalina .down.> jaxrs @enduml
  • #24: database "Hazelcast IMDG" as hz actor User as user node "JVM" { interface HTTP artifact "application.jar" { control "Controller" as ctrl file quarkus file "quarkus-hazelcast-client" as hzclient file "servlet" as servlet file "jax-rs" as jaxrs } } user -right-> HTTP HTTP -down- quarkus quarkus - ctrl ctrl - hzclient hzclient - hz ctrl .down.> servlet quarkus .down.> servlet ctrl .down.> jaxrs quarkus .down.> jaxrs
  • #25: database "Hazelcast IMDG" as hz actor User as user interface HTTP artifact "application.exe" { control "Controller" as ctrl file quarkus file "quarkus-hazelcast-client" as hzclient file "servlet" as servlet file "jax-rs" as jaxrs } user -right-> HTTP HTTP -down- quarkus quarkus - ctrl ctrl - hzclient hzclient - hz ctrl .down.> servlet quarkus .down.> servlet ctrl .down.> jaxrs quarkus .down.> jaxrs