Post on 10-May-2015
transcript
NoRedeploysInstant updates for dev and prod
Anton ArhipovProduct Lead, JRebel@antonarhipov @javarebel
Saturday, April 21, 12
!!!WARNING!!!
Saturday, April 21, 12
Turnaround cycle
Make a change
Build,deploy,wait
Check the result
Saturday, April 21, 12
BuildResolve dependencies
Copy staGc resources
Compile classes
Package modules into JARs
Package everything into WAR/EAR
Saturday, April 21, 12
BuildResolve dependencies
Copy staGc resources
Compile classes
Package modules into JARs
Package everything into WAR/EAR
Saturday, April 21, 12
Exploded Directory Deployment
Saturday, April 21, 12
Exploded Directory Deployment
Saturday, April 21, 12
JeAy Launcherpublic class Launcher {
public static void main(String[] args) {
Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector(); connector.setPort(8080); server.addConnector(connector);
WebAppContext context = new WebAppContext("war", "/"); server.setHandler(context); server.start();
}
}
Saturday, April 21, 12
Deployment
1–60s 30s – 15min ~1min
container boot Bme
applicaBon deployment
navigaBon
Saturday, April 21, 12
Deployment
1–60s 30s – 15min ~1min
container boot Bme
applicaBon deployment
navigaBon
OOM
Saturday, April 21, 12
OutOfMemoryErrorDEMO
Saturday, April 21, 12
Externalized, Temporary,
Serializable, Deriva6ve,
State%
Saturday, April 21, 12
Reloading Classes
MyObject
MyObject.class
OldClassLoader
Saturday, April 21, 12
Reloading Classes
MyObject
MyObject.class
OldClassLoader NewClassLoader
Saturday, April 21, 12
Reloading Classes
MyObject
MyObject.class
OldClassLoader NewClassLoader
MyObject
MyObject.class
Recreate object
Saturday, April 21, 12
Web ApplicaBon Redeployment Process
OldClassLoader
Libraries
Classes Servlet
State
Session
Saturday, April 21, 12
Web ApplicaBon Redeployment Process
OldClassLoader
Libraries
Classes Servlet
State
Session
NewClassLoaderSaturday, April 21, 12
Web ApplicaBon Redeployment Process
OldClassLoader
Libraries
Classes Servlet
State
Session
NewClassLoader
Libraries
Classes
Saturday, April 21, 12
Web ApplicaBon Redeployment Process
OldClassLoader
Libraries
Classes Servlet
State
Session
NewClassLoader
Libraries
Classes Servlet
Saturday, April 21, 12
Web ApplicaBon Redeployment Process
OldClassLoader
Libraries
Classes Servlet
State
Session
NewClassLoader
Libraries
Classes Servlet
State
init()
Saturday, April 21, 12
Web ApplicaBon Redeployment Process
OldClassLoader
Libraries
Classes Servlet
State
Session
NewClassLoader
Libraries
Classes Servlet
State
Session
Serialize/deserialize
Saturday, April 21, 12
Web ApplicaBon Redeployment Process
OldClassLoader
Libraries
Classes Servlet
State
Session
NewClassLoader
Libraries
Classes Servlet
State
Session
Saturday, April 21, 12
Web ApplicaBon Redeployment Process
NewClassLoader
Libraries
Classes Servlet
State
Session
Saturday, April 21, 12
Web ApplicaBon Redeployment Process
OldClassLoader
Libraries
Classes Servlet
State
Session
NewClassLoader
Libraries
Classes Servlet
State
Session
Saturday, April 21, 12
OutOfMemoryErrorSimulation
Saturday, April 21, 12
hAp://zeroturnaround.com/java-‐ee-‐producBvity-‐report-‐2011/Saturday, April 21, 12
MyObject
MyObject.class
ClassLoader
Code101000101100010010 New code
111000100101010010
Make changes in IDE
HotSwap
HotSwap
Saturday, April 21, 12
MyObject
MyObject.class
ClassLoader
Code101000101100010010 New code
111000100101010010
Make changes in IDE
JRebel
JRebel
Saturday, April 21, 12
JRebel&vs&HotSwap&HotSwap( JRebel(
Changing&method&bodies& +( +(Adding/removing&methods& ;& +&
Adding/removing&constructors& ;& +&
Adding/removing&fields& ;& +&
Adding/removing&classes& ;& +&
Adding/removing&annota?ons& ;& +&
Replacing&superclass& ;& ;&Adding/removing&implemented&interfaces&
;& ;&
Hotswap JRebel
Hotswap vs JRebel
Saturday, April 21, 12
MyObject
MyObject.class
ClassLoader
Code101000101100010010 New code
111000100101010010
Make changes in IDE
JRebel
JRebel
Saturday, April 21, 12
MyObject
MyObject.class
ClassLoader
Code101000101100010010 New code
111000100101010010
Make changes in IDE
JRebel
Fram
ework
JRebel
Saturday, April 21, 12
MyObject
MyObject.class
ClassLoader
Code101000101100010010 New code
111000100101010010
Make changes in IDE
JRebel
Fram
ework
ConfiguraGon(XML, annotaGons,..)
JRebel
Saturday, April 21, 12
MyApp.war
virtual mappinggetResource(“hello.html”) read(“src/main/.../hello.html”)
Saturday, April 21, 12
in acBon
Saturday, April 21, 12
JRebel IntegraBon
hAp://zeroturnaround.com/jrebel/features/frameworks/Saturday, April 21, 12
What About Live Environments?
Saturday, April 21, 12
Saturday, April 21, 12
Saturday, April 21, 12
• LiveRebel updates are– Online– Automated– TransacBonal– 100% Reversible– Instant
Saturday, April 21, 12
32
?Saturday, April 21, 12