noredeploys: instant updates for dev and prod

Post on 10-May-2015

665 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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

top related