• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Jevgeni Kabanov in GeekOut: Redefining redeploys
 

Jevgeni Kabanov in GeekOut: Redefining redeploys

on

  • 1,946 views

 

Statistics

Views

Total Views
1,946
Views on SlideShare
1,049
Embed Views
897

Actions

Likes
0
Downloads
0
Comments
0

3 Embeds 897

http://mcgray.com.ua 820
http://geekout.ee 75
http://geekoutevent.wordpress.com 2

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Hi guys! My name is Jevgeni Kabanov and I’m here to present the “Do you really get changes?” talk.
  • Here’s my life in a tag cloud. I’m the original creator of JRebel and now the CTO of ZeroTurnaround, I used to write Haskell and still am a bit snooty about other languages, but I’ve been digging deep in Java for the past 7 years. I’m one article away from my PhD and have a wife, two cats and a really fast bike :)Before we go any further I’d like to ask you if you heard about JRebel?
  • Bringing developers and administrators together. Automation, lightweight process, fast reaction to errors v/s preventing errors at all costs
  • ClassLoader abuse
  • The majority of process restrictions stem from the technical issues.
  • Lower than expected, but is it because they don’t care or because it’s so hard to do without downtime?
  • This was calculated from those who allow downtime v/s those who actually are subject to it. The price is the average one, average length of an update is 1.6 hours. Could be more than $300,000 per update for some unlucky folks.
  • Only 16% fully automated! 54% majority has a manual step, 30% manual to a (varyingly) large extent. 7% have an “It’s the last copy of a list of arcane steps printed out three years ago. (May or may not involve sacrificing a goat)”
  • Lack of automation revealed nicely by the most popular tool, Maven & Ant mentioned often too. No real tooling available for automation!
  • Under 12% do fully transparent updates with no downtimes, 46% take the app offline (off-hours are a common complain), 42% risk side-effects with hacks causing complaints about reliability and downtime. Only 12% use container redeployment, why is that?
  • Very low.
  • We’ll examine all of them down the line.
  • 33% report onlyOutOfMemoryErrors, 46% multiple additional issues including PermGen or OutOfMemoryErrors, lack of support for database updates, thread races and deadlocks, thread and resource leaks, security concerns, native library issues, a multitude of application server caching issues, performance overhead, rollback difficulties and lack of reliability.
  • 33% report onlyOutOfMemory issues, 46% multiple additional issues including lack of support for database updates, thread races and deadlocks, thread and resource leaks, security concerns, native library issues, a multitude of application server caching issues, performance overhead, rollback difficulties and lack of reliability.
  • 33% report onlyOutOfMemory issues, 46% multiple additional issues including lack of support for database updates, thread races and deadlocks, thread and resource leaks, security concerns, native library issues, a multitude of application server caching issues, performance overhead, rollback difficulties and lack of reliability.
  • Tomcat 7, Weblogic 9.x+
  • The absolute majority of current ready-made tools support only two update methods: container redeployment and restarts with downtime
  • Session clustering is subject to state structure changes and heisenbugs
  • If the app is actively used it may take forever. Hard to automate due to lack of APIs and ready-made tooling. Needs manual control.
  • 33% report onlyOutOfMemory issues, 46% multiple additional issues including lack of support for database updates, thread races and deadlocks, thread and resource leaks, security concerns, native library issues, a multitude of application server caching issues, performance overhead, rollback difficulties and lack of reliability.
  • Rolling
  • 33% report onlyOutOfMemory issues, 46% multiple additional issues including lack of support for database updates, thread races and deadlocks, thread and resource leaks, security concerns, native library issues, a multitude of application server caching issues, performance overhead, rollback difficulties and lack of reliability.
  • LiveRebel does in-app hot updates, with no downtime, no lost sessions, no OOME, no side effect. It’s fully automated and instant.
  • 33% report onlyOutOfMemory issues, 46% multiple additional issues including lack of support for database updates, thread races and deadlocks, thread and resource leaks, security concerns, native library issues, a multitude of application server caching issues, performance overhead, rollback difficulties and lack of reliability.
  • 33% report onlyOutOfMemory issues, 46% multiple additional issues including lack of support for database updates, thread races and deadlocks, thread and resource leaks, security concerns, native library issues, a multitude of application server caching issues, performance overhead, rollback difficulties and lack of reliability.
  • Rolling restarts are hard because changes are hard in general!
  • Look at .NET, Dynamic languages, etc

Jevgeni Kabanov in GeekOut: Redefining redeploys Jevgeni Kabanov in GeekOut: Redefining redeploys Presentation Transcript

  • Do you really get changes?
    Jevgeni KabanovFounder & CTO of ZeroTurnaround
  • twitter.com/ekabanovzeroturnaround.com
  • (how awesome is that?)
    Over30 million builds, redeploys & restarts prevented for 15,000+ Java developers
    twitter.com/ekabanov
  • DevOps
  • ClassLoaders
  • Conversations & Research(LiveRebel)
  • Tech v/sProcess
  • How updates happen?
  • What are the problems?
  • How can we fix them?
  • Production Update Survey, May 2011
  • 27% forbid downtime during production
  • 19% lose ~$3,230 per minute on every update
  • Update process rating
  • Production update tools
  • Production update methods
  • Only 27% satisfied
  • Issues: tooling, downtime, reliability, off-hours
  • App Servers do ONLY redeployment,BUT
  • Container Redeployment is a HACK!
  • 24% allow redeployment, 12% rely on it
  • 79% reportissues with redeployment
  • Time for a SIMULATION
  • Reloading an Object
    OldClassLoader
    NewClassLoader
    MyObject.class
    MyObject.class
    Recreate the object
    MyObject
    MyObject
  • Leaking ClassLoaders
    ClassLoader
    Class1.class
    Class2.class
    Class3.class
    Static Fields
    Static Fields
    Static Fields
  • Leaking ClassLoaders
    WebApp.class
    WebApp.class
    WebApp.class
    WebAppFactory$1
    WebAppFactory$1
    WebAppFactory$1
    Leak.class
    Leak.class
    Leak.class
    Leak
    Leak
    Leak
  • Time for a DEMO
  • BUT Wait!
  • Parallel version deployment
  • Rolling Restarts
  • Session clustering
  • Session draining
  • Session reset
  • Parallel hardware
  • Time for a DEMO
  • jenkins-demo.elasticbeanstalk.com
  • Time for a DEMO
  • demo0.liverebel.com/rebel-chat/
  • Future: in-app updates, multi-process JVMs, ???
  • Conclusions
    Container redeploys are unreliable
    Most popular update method is restart in off-hours
    Biggest issues are lack of automation and downtime during updates
    Another issue is lack of standard language for lightweight processes
    In-App Updates and automated rolling restarts will solve majority of issues
  • Q&A