40
NoRedeploys Instant updates for dev and prod Anton Arhipov Product Lead, JRebel @antonarhipov @javarebel Saturday, April 21, 12

NoRedeploys: instant updates for dev and prod

Embed Size (px)

Citation preview

Page 1: NoRedeploys: instant updates for dev and prod

NoRedeploysInstant  updates  for  dev  and  prod

Anton  ArhipovProduct  Lead,  JRebel@antonarhipov  @javarebel

Saturday, April 21, 12

Page 2: NoRedeploys: instant updates for dev and prod

!!!WARNING!!!

Saturday, April 21, 12

Page 3: NoRedeploys: instant updates for dev and prod

Turnaround  cycle

Make  a  change

Build,deploy,wait

Check  the  result

Saturday, April 21, 12

Page 4: NoRedeploys: instant updates for dev and prod

BuildResolve  dependencies

Copy  staGc  resources

Compile  classes

Package  modules  into  JARs

Package  everything  into  WAR/EAR

Saturday, April 21, 12

Page 5: NoRedeploys: instant updates for dev and prod

BuildResolve  dependencies

Copy  staGc  resources

Compile  classes

Package  modules  into  JARs

Package  everything  into  WAR/EAR

Saturday, April 21, 12

Page 6: NoRedeploys: instant updates for dev and prod

Exploded  Directory  Deployment

Saturday, April 21, 12

Page 7: NoRedeploys: instant updates for dev and prod

Exploded  Directory  Deployment

Saturday, April 21, 12

Page 8: NoRedeploys: instant updates for dev and prod

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

Page 9: NoRedeploys: instant updates for dev and prod

Deployment

1–60s 30s  –  15min ~1min

container  boot  Bme

applicaBon  deployment  

navigaBon

Saturday, April 21, 12

Page 10: NoRedeploys: instant updates for dev and prod

Deployment

1–60s 30s  –  15min ~1min

container  boot  Bme

applicaBon  deployment  

navigaBon

OOM

Saturday, April 21, 12

Page 11: NoRedeploys: instant updates for dev and prod

OutOfMemoryErrorDEMO

Saturday, April 21, 12

Page 12: NoRedeploys: instant updates for dev and prod

Externalized, Temporary,

Serializable, Deriva6ve,

State%

Saturday, April 21, 12

Page 13: NoRedeploys: instant updates for dev and prod

Reloading  Classes

MyObject

MyObject.class

OldClassLoader

Saturday, April 21, 12

Page 14: NoRedeploys: instant updates for dev and prod

Reloading  Classes

MyObject

MyObject.class

OldClassLoader NewClassLoader

Saturday, April 21, 12

Page 15: NoRedeploys: instant updates for dev and prod

Reloading  Classes

MyObject

MyObject.class

OldClassLoader NewClassLoader

MyObject

MyObject.class

Recreate  object

Saturday, April 21, 12

Page 16: NoRedeploys: instant updates for dev and prod

Web  ApplicaBon  Redeployment  Process

OldClassLoader

Libraries

Classes Servlet

State

Session

Saturday, April 21, 12

Page 17: NoRedeploys: instant updates for dev and prod

Web  ApplicaBon  Redeployment  Process

OldClassLoader

Libraries

Classes Servlet

State

Session

NewClassLoaderSaturday, April 21, 12

Page 18: NoRedeploys: instant updates for dev and prod

Web  ApplicaBon  Redeployment  Process

OldClassLoader

Libraries

Classes Servlet

State

Session

NewClassLoader

Libraries

Classes

Saturday, April 21, 12

Page 19: NoRedeploys: instant updates for dev and prod

Web  ApplicaBon  Redeployment  Process

OldClassLoader

Libraries

Classes Servlet

State

Session

NewClassLoader

Libraries

Classes Servlet

Saturday, April 21, 12

Page 20: NoRedeploys: instant updates for dev and prod

Web  ApplicaBon  Redeployment  Process

OldClassLoader

Libraries

Classes Servlet

State

Session

NewClassLoader

Libraries

Classes Servlet

State

init()

Saturday, April 21, 12

Page 21: NoRedeploys: instant updates for dev and prod

Web  ApplicaBon  Redeployment  Process

OldClassLoader

Libraries

Classes Servlet

State

Session

NewClassLoader

Libraries

Classes Servlet

State

Session

Serialize/deserialize

Saturday, April 21, 12

Page 22: NoRedeploys: instant updates for dev and prod

Web  ApplicaBon  Redeployment  Process

OldClassLoader

Libraries

Classes Servlet

State

Session

NewClassLoader

Libraries

Classes Servlet

State

Session

Saturday, April 21, 12

Page 23: NoRedeploys: instant updates for dev and prod

Web  ApplicaBon  Redeployment  Process

NewClassLoader

Libraries

Classes Servlet

State

Session

Saturday, April 21, 12

Page 24: NoRedeploys: instant updates for dev and prod

Web  ApplicaBon  Redeployment  Process

OldClassLoader

Libraries

Classes Servlet

State

Session

NewClassLoader

Libraries

Classes Servlet

State

Session

Saturday, April 21, 12

Page 25: NoRedeploys: instant updates for dev and prod

OutOfMemoryErrorSimulation

Saturday, April 21, 12

Page 26: NoRedeploys: instant updates for dev and prod

hAp://zeroturnaround.com/java-­‐ee-­‐producBvity-­‐report-­‐2011/Saturday, April 21, 12

Page 27: NoRedeploys: instant updates for dev and prod

MyObject

MyObject.class

ClassLoader

Code101000101100010010 New  code

111000100101010010

Make  changes  in  IDE

HotSwap

HotSwap

Saturday, April 21, 12

Page 28: NoRedeploys: instant updates for dev and prod

MyObject

MyObject.class

ClassLoader

Code101000101100010010 New  code

111000100101010010

Make  changes  in  IDE

JRebel

JRebel

Saturday, April 21, 12

Page 29: NoRedeploys: instant updates for dev and prod

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

Page 30: NoRedeploys: instant updates for dev and prod

MyObject

MyObject.class

ClassLoader

Code101000101100010010 New  code

111000100101010010

Make  changes  in  IDE

JRebel

JRebel

Saturday, April 21, 12

Page 31: NoRedeploys: instant updates for dev and prod

MyObject

MyObject.class

ClassLoader

Code101000101100010010 New  code

111000100101010010

Make  changes  in  IDE

JRebel

Fram

ework

JRebel

Saturday, April 21, 12

Page 32: NoRedeploys: instant updates for dev and prod

MyObject

MyObject.class

ClassLoader

Code101000101100010010 New  code

111000100101010010

Make  changes  in  IDE

JRebel

Fram

ework

ConfiguraGon(XML,  annotaGons,..)

JRebel

Saturday, April 21, 12

Page 33: NoRedeploys: instant updates for dev and prod

MyApp.war

virtual  mappinggetResource(“hello.html”) read(“src/main/.../hello.html”)

Saturday, April 21, 12

Page 34: NoRedeploys: instant updates for dev and prod

in  acBon

Saturday, April 21, 12

Page 35: NoRedeploys: instant updates for dev and prod

JRebel  IntegraBon

hAp://zeroturnaround.com/jrebel/features/frameworks/Saturday, April 21, 12

Page 36: NoRedeploys: instant updates for dev and prod

What  About  Live  Environments?

Saturday, April 21, 12

Page 37: NoRedeploys: instant updates for dev and prod

Saturday, April 21, 12

Page 38: NoRedeploys: instant updates for dev and prod

Saturday, April 21, 12

Page 39: NoRedeploys: instant updates for dev and prod

• LiveRebel  updates  are– Online– Automated– TransacBonal– 100%  Reversible– Instant

Saturday, April 21, 12

Page 40: NoRedeploys: instant updates for dev and prod

32

?Saturday, April 21, 12