SlideShare a Scribd company logo
@nicolas_frankel
An Experiment in Continuous
Deployment of JVM applications
Nicolas Fränkel
@nicolas_frankel
Me, myself and I
 Former developer, team lead, architect,
blah-blah
 Developer Advocate
 Lots of crazy creative ideas
@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
Continuous Integration
 Compilation
 Unit testing
 Packaging
 Integration testing
 Containerization
 Storing in a registry
 Etc.
@nicolas_frankel
Continous Stuff
 Continuous Integration
• Should be the norm
 Continuous Delivery
• Much harder
 Continous Deployment
• No downtime
@nicolas_frankel
Traditional JVM deployment model
 Stop the JVM
 Overwrite JAR / WAR
 Start the JVM again
@nicolas_frankel
Continuous Deployment approaches
Blue-Green Deployment
@nicolas_frankel
Continuous Deployment approaches
Kubernetes Rolling Updated
1.0 1.01.02.0 2.0 2.0
@nicolas_frankel
Change bytecode inside a JVM with no downtime?
@nicolas_frankel
Plan
1. The Instrumentation API
2. The Attach API
3. Binding everything together with
streaming
4. Demo!
@nicolas_frankel
Java agents
 JAR with specific meta-data
 Part of Instrumentation API
• Change bytecode of running
applications
@nicolas_frankel
Types of agent
 Static
• Set on at startup
• java -jar -javaagent:/path/to/agent.jar my.jar
 Dynamic
• Loaded by the Attach API
@nicolas_frankel
Agent configuration
Static Dynamic
Entry-
point
public static void premain(
String agentArgs,
Instrumentation inst)
public static void agentmain(
String agentArgs,
Instrumentation inst)
Manifest
entry
Premain-Class Agent-Class
@nicolas_frankel
Instrumentation use-cases
 Change existing class implementation
• With some limitations
 Apply automatic transformation of
bytecode
@nicolas_frankel
Instrumentation API
@nicolas_frankel
The Attach API
 Allows to dynamically load an agent
inside another running JVM
• No need to run in debug
 Requirements:
1. Need to run on the same system
2. Must know the PID of the JVM
@nicolas_frankel
The Attach API
@nicolas_frankel
Options to move bytecode around
 Batching
 Streaming
@nicolas_frankel
In-memory stream processing engines
 Cloud
• Amazon Kinesis
• IBM Streams
 On-premise
• Apache Flink
• Hazelcast Jet
• Apache Beam
⁃ Abstraction over some of the above
@nicolas_frankel
Hazelcast Jet
 Apache 2 Open Source
 Single JAR
 Unified batch/streaming API
Hazelcast In-Memory Computing Platform
Ingest Combine Stream Compute Transform Publish
In-Memory
Operational
Storage
Join, Enrich,
Group,
Aggregate
Windowing,
Event Time
Processing
Distributed and
Parallel
Computations
Filter,
Clean, Convert
In-Memory
Subscriber
Notifications
Databases
Kafka
IoT
Custom
Connector
Enterprise
Applications
Hazelcast
IMDG
File Watcher
Socket
Database
Events
Kafka
Alerts
Enterprise
Applications
Interactive
Analytics
Hazelcast IMDG,
Maps, Caches,
Lists
Databases
HDFS
File
@nicolas_frankel
Overall design
@nicolas_frankel
Overall flow
@nicolas_frankel
@nicolas_frankel
Limitations of the demo
 No version tagging
 No loading of new classes
 redefineClasses() “must not add,
remove or rename fields or methods,
change the signatures of methods, or
change inheritance”
@nicolas_frankel
Improvements
1. Stream from the CI pipeline
2. Add additional meta-data in each class
• e.g. from Git tag
3. Implement one’s custom classloader à
la Spring DevTools
@nicolas_frankel
Thanks for your attention!
 https://blog.frankel.ch/
 @nicolas_frankel
 https://bit.ly/bytecode-streaming

More Related Content

What's hot (20)

PDF
A Streaming Platform Architecture Based on Apache Kafka
confluent
 
PDF
KFServing and Kubeflow Pipelines
Animesh Singh
 
PPTX
How to deploy your Apps in serverless-way using App Engine.pptx
Institut Teknologi Sepuluh Nopember Surabaya
 
PDF
OpenNebulaConf2018 - Hybrid Clouds: Dancing with "Automated" Virtual Machines...
OpenNebula Project
 
PDF
How the Automation of a Benchmark Famework Keeps Pace with the Dev Cycle at I...
DevOps.com
 
PDF
AgileTW Feat. DevOpsTW: 維運 Kubernetes 的兩三事
smalltown
 
PDF
Building Robust Pipelines with Airflow
Erin Shellman
 
PDF
Apache Kafka – (Pattern and) Anti-Pattern
confluent
 
PDF
OSMC 2021 | Thola – A tool for monitoring and provisioning network devices
NETWAYS
 
PDF
Friends don't let friends do dual writes: Outbox pattern with OpenShift Strea...
Red Hat Developers
 
PDF
Javantura v4 - FreeMarker in Spring web - Marin Kalapać
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Containerised ASP.NET Core apps with Kubernetes
Codemotion Tel Aviv
 
PDF
Rethinking the debugger
Iulian Dragos
 
PDF
Load test REST APIs using gatling
Jayaram Sankaranarayanan
 
PDF
Kubernetes: The evolution of distributed systems | DevNation Tech Talk
Red Hat Developers
 
PPTX
High Performance Serverless Functions in Scala
Jason Swartz
 
PDF
High Available Drupal
Bram Vogelaar
 
PDF
Time to-live: How to Perform Automatic State Cleanup in Apache Flink - Andrey...
Flink Forward
 
PPTX
How to setup a development environment for ONAP
Victor Morales
 
PDF
Take a Look at Akka+Java (English version)
GlobalLogic Ukraine
 
A Streaming Platform Architecture Based on Apache Kafka
confluent
 
KFServing and Kubeflow Pipelines
Animesh Singh
 
How to deploy your Apps in serverless-way using App Engine.pptx
Institut Teknologi Sepuluh Nopember Surabaya
 
OpenNebulaConf2018 - Hybrid Clouds: Dancing with "Automated" Virtual Machines...
OpenNebula Project
 
How the Automation of a Benchmark Famework Keeps Pace with the Dev Cycle at I...
DevOps.com
 
AgileTW Feat. DevOpsTW: 維運 Kubernetes 的兩三事
smalltown
 
Building Robust Pipelines with Airflow
Erin Shellman
 
Apache Kafka – (Pattern and) Anti-Pattern
confluent
 
OSMC 2021 | Thola – A tool for monitoring and provisioning network devices
NETWAYS
 
Friends don't let friends do dual writes: Outbox pattern with OpenShift Strea...
Red Hat Developers
 
Javantura v4 - FreeMarker in Spring web - Marin Kalapać
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Containerised ASP.NET Core apps with Kubernetes
Codemotion Tel Aviv
 
Rethinking the debugger
Iulian Dragos
 
Load test REST APIs using gatling
Jayaram Sankaranarayanan
 
Kubernetes: The evolution of distributed systems | DevNation Tech Talk
Red Hat Developers
 
High Performance Serverless Functions in Scala
Jason Swartz
 
High Available Drupal
Bram Vogelaar
 
Time to-live: How to Perform Automatic State Cleanup in Apache Flink - Andrey...
Flink Forward
 
How to setup a development environment for ONAP
Victor Morales
 
Take a Look at Akka+Java (English version)
GlobalLogic Ukraine
 

Similar to London Java Community - An Experiment in Continuous Deployment of JVM applications (20)

PDF
stackconf 2020 | Real Continuous Deployment of JVM applications by Nicolas Fr...
NETWAYS
 
PDF
Shorten All URLs
Jakarta_EE
 
PPTX
Istanbul JUG - 3 performance improvements with Hazelcast IMDG in your microse...
Nicolas Fränkel
 
PPTX
go>tech world - 3 performance improvements with Hazelcast IMDG in your micros...
Nicolas Fränkel
 
PPTX
YaJUG/Kaiserslautern JUG - 3 easy improvements in your microservices architec...
Nicolas Fränkel
 
PPTX
YAJUG - 3 Idées d’amélioration pour vos Architectures Microservices
Nicolas Fränkel
 
PPTX
Voxxed Days Cluj - 3 performance improvements with Hazelcast IMDG in your mic...
Nicolas Fränkel
 
PPTX
ConFoo - 3 performance improvements
Nicolas Fränkel
 
PPTX
SouJava- 3 easy performance improvements in your microservices architecture
Nicolas Fränkel
 
PPTX
DevTernity - OOP in the enterprise
Nicolas Fränkel
 
PDF
Java agents for fun and (not so much) profit
Robert Munteanu
 
PPTX
JavaDay Istanbul - 3 improvements in your microservices architecture
Nicolas Fränkel
 
PPTX
JUG SF - Introduction to data streaming
Nicolas Fränkel
 
PPTX
SCALE - Stream processing and Open Data, a match made in Heaven
Nicolas Fränkel
 
POTX
14.05.2012 Opening the tool box: Development, testing and deployment in the H...
Swiss Big Data User Group
 
PPTX
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
Nicolas Fränkel
 
PPTX
BruJUG - Introduction to data streaming
Nicolas Fränkel
 
PPTX
WaJUG - Introduction to data streaming
Nicolas Fränkel
 
PPTX
JUG Tirana - Introduction to data streaming
Nicolas Fränkel
 
PPTX
vJUG - Introduction to data streaming
Nicolas Fränkel
 
stackconf 2020 | Real Continuous Deployment of JVM applications by Nicolas Fr...
NETWAYS
 
Shorten All URLs
Jakarta_EE
 
Istanbul JUG - 3 performance improvements with Hazelcast IMDG in your microse...
Nicolas Fränkel
 
go>tech world - 3 performance improvements with Hazelcast IMDG in your micros...
Nicolas Fränkel
 
YaJUG/Kaiserslautern JUG - 3 easy improvements in your microservices architec...
Nicolas Fränkel
 
YAJUG - 3 Idées d’amélioration pour vos Architectures Microservices
Nicolas Fränkel
 
Voxxed Days Cluj - 3 performance improvements with Hazelcast IMDG in your mic...
Nicolas Fränkel
 
ConFoo - 3 performance improvements
Nicolas Fränkel
 
SouJava- 3 easy performance improvements in your microservices architecture
Nicolas Fränkel
 
DevTernity - OOP in the enterprise
Nicolas Fränkel
 
Java agents for fun and (not so much) profit
Robert Munteanu
 
JavaDay Istanbul - 3 improvements in your microservices architecture
Nicolas Fränkel
 
JUG SF - Introduction to data streaming
Nicolas Fränkel
 
SCALE - Stream processing and Open Data, a match made in Heaven
Nicolas Fränkel
 
14.05.2012 Opening the tool box: Development, testing and deployment in the H...
Swiss Big Data User Group
 
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
Nicolas Fränkel
 
BruJUG - Introduction to data streaming
Nicolas Fränkel
 
WaJUG - Introduction to data streaming
Nicolas Fränkel
 
JUG Tirana - Introduction to data streaming
Nicolas Fränkel
 
vJUG - Introduction to data streaming
Nicolas Fränkel
 
Ad

More from Nicolas Fränkel (18)

PPTX
SnowCamp - Adding search to a legacy application
Nicolas Fränkel
 
PPTX
Un CV de dévelopeur toujours a jour
Nicolas Fränkel
 
PPTX
Zero-downtime deployment on Kubernetes with Hazelcast
Nicolas Fränkel
 
PDF
jLove - A Change-Data-Capture use-case: designing an evergreen cache
Nicolas Fränkel
 
PPTX
BigData conference - Introduction to stream processing
Nicolas Fränkel
 
PPTX
ADDO - Your own Kubernetes controller, not only in Go
Nicolas Fränkel
 
PPTX
TestCon Europe - Mutation Testing to the Rescue of Your Tests
Nicolas Fränkel
 
PPTX
GeekcampSG 2020 - A Change-Data-Capture use-case: designing an evergreen cache
Nicolas Fränkel
 
PPTX
Devclub.lv - Introduction to stream processing
Nicolas Fränkel
 
PPTX
OSCONF Koshi - Zero downtime deployment with Kubernetes, Flyway and Spring Boot
Nicolas Fränkel
 
PPTX
JOnConf - A CDC use-case: designing an Evergreen Cache
Nicolas Fränkel
 
PPTX
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
Nicolas Fränkel
 
PPTX
Java.IL - Your own Kubernetes controller, not only in Go!
Nicolas Fränkel
 
PPTX
OSCONF - Your own Kubernetes controller: not only in Go
Nicolas Fränkel
 
PPTX
vKUG - Migrating Spring Boot apps from annotation-based config to Functional
Nicolas Fränkel
 
PPTX
Tech talks - 3 performance improvements
Nicolas Fränkel
 
PPTX
ING Meetup - Migrating Spring Boot Config Annotations to Functional with Kotlin
Nicolas Fränkel
 
PPTX
DevOpsDays Madrid - Zero-downtime deployment with Kubernetes, Spring Boot and...
Nicolas Fränkel
 
SnowCamp - Adding search to a legacy application
Nicolas Fränkel
 
Un CV de dévelopeur toujours a jour
Nicolas Fränkel
 
Zero-downtime deployment on Kubernetes with Hazelcast
Nicolas Fränkel
 
jLove - A Change-Data-Capture use-case: designing an evergreen cache
Nicolas Fränkel
 
BigData conference - Introduction to stream processing
Nicolas Fränkel
 
ADDO - Your own Kubernetes controller, not only in Go
Nicolas Fränkel
 
TestCon Europe - Mutation Testing to the Rescue of Your Tests
Nicolas Fränkel
 
GeekcampSG 2020 - A Change-Data-Capture use-case: designing an evergreen cache
Nicolas Fränkel
 
Devclub.lv - Introduction to stream processing
Nicolas Fränkel
 
OSCONF Koshi - Zero downtime deployment with Kubernetes, Flyway and Spring Boot
Nicolas Fränkel
 
JOnConf - A CDC use-case: designing an Evergreen Cache
Nicolas Fränkel
 
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
Nicolas Fränkel
 
Java.IL - Your own Kubernetes controller, not only in Go!
Nicolas Fränkel
 
OSCONF - Your own Kubernetes controller: not only in Go
Nicolas Fränkel
 
vKUG - Migrating Spring Boot apps from annotation-based config to Functional
Nicolas Fränkel
 
Tech talks - 3 performance improvements
Nicolas Fränkel
 
ING Meetup - Migrating Spring Boot Config Annotations to Functional with Kotlin
Nicolas Fränkel
 
DevOpsDays Madrid - Zero-downtime deployment with Kubernetes, Spring Boot and...
Nicolas Fränkel
 
Ad

Recently uploaded (20)

PDF
Add Background Images to Charts in IBM SPSS Statistics Version 31.pdf
Version 1 Analytics
 
PDF
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
PDF
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
PDF
Adobe Premiere Pro Crack / Full Version / Free Download
hashhshs786
 
PPTX
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
PDF
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
PDF
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
PDF
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PPTX
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
PDF
NEW-Viral>Wondershare Filmora 14.5.18.12900 Crack Free
sherryg1122g
 
PDF
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
PDF
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PPTX
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PPTX
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
Add Background Images to Charts in IBM SPSS Statistics Version 31.pdf
Version 1 Analytics
 
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
Adobe Premiere Pro Crack / Full Version / Free Download
hashhshs786
 
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
NEW-Viral>Wondershare Filmora 14.5.18.12900 Crack Free
sherryg1122g
 
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 

London Java Community - An Experiment in Continuous Deployment of JVM applications