Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John Stevenson
Upcoming SlideShare
Loading in...5

Like this? Share it with your network


Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John Stevenson



2011-11-01 | 10:40 AM - 11:40 AM...

2011-11-01 | 10:40 AM - 11:40 AM
So you want to do continuous delivery but is it working and how does the team and the organisation know what's going on? Using wallboard, information radiators and even just bits of paper stuck to the wall can help you manage all your development.

Covering the many ways companies have visualised the mashinations of their work and providing tips on setting up your own uber information radiators.



Total Views
Views on SlideShare
Embed Views



1 Embed 16 16


Upload Details

Uploaded via as Adobe PDF

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.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John Stevenson Presentation Transcript

  • 1. Continuous Deployment The writing is on the wall John Stevenson Lean Agile Machine©LeanAgileMachineCreative Commons Licence
  • 2. Who is John Stevenson● Lean agile coach  Kanban, system thinking, ToC.● Atlassian ambassador in UK  Growing communities around JIRA...● Community geek  London Java, Graduate Devs,  London Scala, London Clojurians, etc.● Dabbles with©LeanAgileMachineCreative Commons Licence
  • 3. My Journey● Started with RUP, UML & XP● Fell for Behaviour Driven Development & kanban● Learn about a lot of Value & Systems thinking● Coached teams & individuals● Sharing experiences with community©LeanAgileMachineCreative Commons Licence
  • 4. So what is Continuous Deployment ?©LeanAgileMachineCreative Commons Licence
  • 5. ...its incredibly hard©LeanAgileMachineCreative Commons Licence
  • 6. ...even if you are...©LeanAgileMachineCreative Commons Licence
  • 7. ...hard plus infinity for everyone else©LeanAgileMachineCreative Commons Licence
  • 8. Continuous deployment example:©LeanAgileMachineCreative Commons Licence
  • 9. ©LeanAgileMachineCreative Commons Licence
  • 10. Typically: 25 deploys per day per developer©LeanAgileMachineCreative Commons Licence
  • 11. Forward culture©LeanAgileMachineCreative Commons Licence
  • 12. So why go for continuous deployment?©LeanAgileMachineCreative Commons Licence
  • 13. ©LeanAgileMachineCreative Commons Licence
  • 14. ©LeanAgileMachineCreative Commons Licence
  • 15. ©LeanAgileMachineCreative Commons Licence
  • 16. ©LeanAgileMachineCreative Commons Licence
  • 17. ©LeanAgileMachine Creative Commons Licence
  • 18. Understanding the businessTable stakes /foundations DifferentiatorsSpoilers Accelerators©LeanAgileMachineCreative Commons Licence
  • 19. ©LeanAgileMachineCreative Commons Licence
  • 20. Benefits©LeanAgileMachineCreative Commons Licence
  • 21. Where to get started ??©LeanAgileMachineCreative Commons Licence
  • 22. Is your team / company ready ? A case study in pain and dissapointment!©LeanAgileMachineCreative Commons Licence
  • 23. Change can be expensive©LeanAgileMachineCreative Commons Licence
  • 24. A long journey of discovery©LeanAgileMachineCreative Commons Licence
  • 25. Involving the whole business©LeanAgileMachineCreative Commons Licence
  • 26. Understanding of Value©LeanAgileMachineCreative Commons Licence
  • 27. The right motivation©LeanAgileMachineCreative Commons Licence
  • 28. What is the goal?©LeanAgileMachineCreative Commons Licence
  • 29. Where to start ??©LeanAgileMachineCreative Commons Licence
  • 30. Visualise how you do IT...©LeanAgileMachineCreative Commons Licence
  • 31. Kanban – a wall of Facts©LeanAgileMachineCreative Commons Licence
  • 32. Let the board show issues... V1.0.1, V1.0.2, V1.0.3, V1.0.4, Build 1209 Build 1221 Build 1301©LeanAgileMachineCreative Commons Licence
  • 33. Value stream mapping The (often wide) path to getting things done Activities that get things done effectively©LeanAgileMachineCreative Commons Licence
  • 34. Software development©LeanAgileMachineCreative Commons Licence
  • 35. Software development©LeanAgileMachineCreative Commons Licence
  • 36. ©LeanAgileMachineCreative Commons Licence
  • 37. Include the whole process... Strategy to shiped Budgeting Business sign off Deployment dry run©LeanAgileMachineCreative Commons Licence
  • 38. Improve the foundations©LeanAgileMachineCreative Commons Licence
  • 39. Monitoring your servers● Nagios / NagVis● The Dude● Microsoft Operations Manager● Outsource IT...©LeanAgileMachineCreative Commons Licence
  • 40. ©LeanAgileMachineCreative Commons Licence
  • 41. ©LeanAgileMachineCreative Commons Licence
  • 42. ©LeanAgileMachineCreative Commons Licence
  • 43. ©LeanAgileMachineCreative Commons Licence
  • 44. ©LeanAgileMachineCreative Commons Licence
  • 45. Sever Provisioning©LeanAgileMachineCreative Commons Licence
  • 46. Its all virtual these days...©LeanAgileMachineCreative Commons Licence
  • 47. ©LeanAgileMachineCreative Commons Licence
  • 48. Virtual Machines Automate provisioning Manage sys-admin tasks remotely Spin up instances into the cloud  Using public cloud when your private cloud is maxed out Off the shelf pre-configured servers©LeanAgileMachineCreative Commons Licence
  • 49. Managing VMs is easy©LeanAgileMachineCreative Commons Licence
  • 50. Automating Virtual Machines©LeanAgileMachineCreative Commons Licence
  • 51. Vagrant – simple to use ● Requirements  Ruby  Virtualbox  Chef / Puppet for other VM systems©LeanAgileMachineCreative Commons Licence
  • 52. Consistent environments©LeanAgileMachineCreative Commons Licence
  • 53. Automated server management Puppet / Chef / Rex ©LeanAgileMachine Creative Commons Licence
  • 54. Disaster recovery for learning©LeanAgileMachineCreative Commons Licence
  • 55. Change freezes The period of time when the most of the changes happen When lots of patches are done ! A good time to learn what is important !©LeanAgileMachineCreative Commons Licence
  • 56. Deployment Strategies©LeanAgileMachineCreative Commons Licence
  • 57. If it hurts, do it more often©LeanAgileMachineCreative Commons Licence
  • 58. Segmented deploys Different customers / different expectations©LeanAgileMachineCreative Commons Licence
  • 59. Timely deployments Cost of delay ? When is the software valuable ?©LeanAgileMachineCreative Commons Licence
  • 60. Smaller deployments©LeanAgileMachineCreative Commons Licence
  • 61. Visualise deployment strategies??©LeanAgileMachineCreative Commons Licence
  • 62. Managing your code©LeanAgileMachineCreative Commons Licence
  • 63. It compiles, ship it!! Ship It Compile©LeanAgileMachineCreative Commons Licence
  • 64. Automated builds Design around common patterns for building Should have valuable reason for doing something different SBT©LeanAgileMachineCreative Commons Licence
  • 65. Simple Maven config<project xmlns="" xmlns:xsi=""xsi:schemaLocation=""><modelVersion>4.0.0</modelVersion> <groupId></groupId> <artifactId>my-app</artifactId><packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>Maven Quick Start Archetype</name><url></url><dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> <scope>test</scope> </dependency></dependencies></project>©LeanAgileMachineCreative Commons Licence
  • 66. Local repositories Nexus Artefactory DVCS©LeanAgileMachineCreative Commons Licence
  • 67. Build tools – continuous feedback Maven 3 Shell Simple Build Tool ~Tests©LeanAgileMachineCreative Commons Licence
  • 68. Coding fast feedback JavaScript©LeanAgileMachineCreative Commons Licence
  • 69. Testable code● TDD / BDD helped devs have a better appreciation of code that is more testable● Faster feedback gave devs (and team) better understanding of what is needed● Resolve issues quickly, prevent many from happening at all●©LeanAgileMachineCreative Commons Licence
  • 70. Behaviour Driven Developent©LeanAgileMachineCreative Commons Licence
  • 71. Deployable software● Automated server builds● Automated deployment scripts / tools● Automated tests / specifications● Effective business review● Faster feedback● Resolve issues quickly● Deploy when valuable©LeanAgileMachineCreative Commons Licence
  • 72. Distributed Versioning● Smaller repositories  Per component / module  Simpler architecture● Manage branching easier with pull requests  A pull system is more effective than central push● Different repos for different purposes  Repo for deployment, trunk, CI server©LeanAgileMachineCreative Commons Licence
  • 73. ©LeanAgileMachineCreative Commons Licence
  • 74. Git Workflow©LeanAgileMachineCreative Commons Licence
  • 75. Git architecure (logical)©LeanAgileMachineCreative Commons Licence
  • 76. ©LeanAgileMachineCreative Commons Licence
  • 77. Change-set history©LeanAgileMachineCreative Commons Licence
  • 78. ©LeanAgileMachineCreative Commons Licence
  • 79. Code reviews DVCS push requests©LeanAgileMachineCreative Commons Licence
  • 80. Central or Distributed Version control©LeanAgileMachineCreative Commons Licence
  • 81. Centralised team©LeanAgileMachineCreative Commons Licence
  • 82. Centralised issuesFear of breaking thebuild  unnecessary branching  delayed commitsOff-line support?Any redundancy inversioning server?©LeanAgileMachineCreative Commons Licence
  • 83. Managed Distributed team©LeanAgileMachineCreative Commons Licence
  • 84. Continuous Integration What When How long Run specifications / unit tests Reports Actions to initiate©LeanAgileMachineCreative Commons Licence
  • 85. CI Server basics©LeanAgileMachineCreative Commons Licence
  • 86. BOfH CI Server Kicks out checked in code if it fails Wires up build bunnies to stop you hiding from broken builds Wall of shame for breaking builds Top ten worst programmers©LeanAgileMachineCreative Commons Licence
  • 87. ©LeanAgileMachineCreative Commons Licence
  • 88. ©LeanAgileMachineCreative Commons Licence
  • 89. CI Server lights©LeanAgileMachineCreative Commons Licence
  • 90. Ultimate Wallboards©LeanAgileMachineCreative Commons Licence
  • 91. Issue ticker Stream of issues flowing Highlight new features, overdue items, critical issues, time related news, etc©LeanAgileMachineCreative Commons Licence
  • 92. ©LeanAgileMachineCreative Commons Licence
  • 93. UltimateWallboard .com©LeanAgileMachineCreative Commons Licence
  • 94. More than compiling code...conf/tomcat-users.xml<user username=”bamboo” password=”bamboo” roles=”manager-script,manager-gui”/> ©LeanAgileMachine Creative Commons Licence
  • 95. One click deploy©LeanAgileMachineCreative Commons Licence
  • 96. Architect for deployment Modular systems Simple interfaces Supported by acceptance tests (specifications) Automate low value tasks©LeanAgileMachineCreative Commons Licence
  • 97. Final thoughts©LeanAgileMachineCreative Commons Licence
  • 98. Predictability / Cadence Smaller tasks Understanding you capacity©LeanAgileMachineCreative Commons Licence
  • 99. Communicate effectively©LeanAgileMachineCreative Commons Licence
  • 100. Feedback©LeanAgileMachineCreative Commons Licence
  • 101. How will you make a change ?● Automated deployments● Distributed version control● Refactoring architecture, design & code● Modularity in design● Migrating from technical debt● Shouting...©LeanAgileMachineCreative Commons Licence
  • 102. Benefits©LeanAgileMachineCreative Commons Licence
  • 103. Thank you©LeanAgileMachineCreative Commons Licence
  • 104. Feedback & Refs @JR0cket Please note: Very few bulletpoints were hurt during the making of this presentation©LeanAgileMachineCreative Commons Licence
  • 105. The big-ish picture©LeanAgileMachineCreative Commons Licence
  • 106. Summary Adaptable practices  TDD/BDD, DDD, kanban, ToC, system thinking Good understanding of supporting tools  Cucumber, CI build jobs, DVCS, ... Strong DevOps capability Understand business value©LeanAgileMachineCreative Commons Licence
  • 107. A tool to collaborate©LeanAgileMachineCreative Commons Licence
  • 108. Visualising the workload©LeanAgileMachineCreative Commons Licence
  • 109. Pull system©LeanAgileMachineCreative Commons Licence
  • 110. Experditing● Visualisation for a high priority task  Big red sticker  Experditing lane  Record other tasks being blocked● Review why you get high priority task  Consider it a constraint / bottleneck©LeanAgileMachineCreative Commons Licence
  • 111. Experditing lane©LeanAgileMachineCreative Commons Licence
  • 112. DevOps Goal keeper● Team rotates people around role● Goalkeeper fields all issues● Rest of team allowed to focus on a (bigger) task● Use visual indicator to show who is the GoalieVisually represent these points ??©LeanAgileMachineCreative Commons Licence
  • 113. Drop the Backlog● The backlog is a omnipresent sign of overload  Useful for pushing back to the management  Bad for team moral  Hide it away (eg. JIRA)● When team are in tune with value, tasks flow more naturally – opportunities are not drowned out©LeanAgileMachineCreative Commons Licence
  • 114. Data dashboard effect● Manager can instantly see what you are working on● Manager can evaluate priorities easily  Or go back and ask for clarification with business● Gives data on issues  Recording task swapping, time to work on tasks  Data to review at retrospective on current approach©LeanAgileMachineCreative Commons Licence
  • 115. ©LeanAgileMachineCreative Commons Licence
  • 116. Washing line©LeanAgileMachineCreative Commons Licence
  • 117. RSPB Royal Society for the protection of Bulletpoints©LeanAgileMachineCreative Commons Licence
  • 118. Change at speed of deployment©LeanAgileMachineCreative Commons Licence
  • 119. Be as creative as needed©LeanAgileMachineCreative Commons Licence
  • 120. Managing the change©LeanAgileMachineCreative Commons Licence
  • 121. Subtle ”Theory of Constraints” ● What is stopping you achieve your goals ?  Identify all the current challenges ● Find how to work effectively  With respect to the biggest challenge ● Incrementally improve around biggest challenge ● Review the challenges©LeanAgileMachineCreative Commons Licence
  • 122. Change at the speed of acceptance● Effective change cannot be pushed● kanban estoles pull, change should be ● Odd that some pulled many agile projects start and end with a big bang©LeanAgileMachineCreative Commons Licence
  • 123. Lean Startup● Business canvas model● Real options● Last responsible moment● Least responsible change©LeanAgileMachineCreative Commons Licence
  • 124. Lessons from Service Desk● Variation of personal kanban  Sticky notes at the side of the keyboard  One priority at once  Need business reason to change priorities  Record reason and number of times you had to revisit the task©LeanAgileMachineCreative Commons Licence
  • 125. DevOps overload● Lots of last minute ● DevOps have no time to patches script deployments ● Have to deal with long,● Deployment like boring deployment buses, nothing for a documents few days then three ● Repeatedly swiched from come at once for the infrastructure work, same night vastly increasing time taken.©LeanAgileMachineCreative Commons Licence
  • 126. Summary of Kanban● Visualse work● Manage WIP ● Helps you stay sane● Engage with business ● Show you are  Shared ownership productive● Encourage realistic ● Deal with micro- priorities management©LeanAgileMachineCreative Commons Licence