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


Published on

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.

Published in: Technology, News & Politics
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

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

  1. 1. Continuous Deployment The writing is on the wall John Stevenson Lean Agile Machine©LeanAgileMachineCreative Commons Licence
  2. 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. 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. 4. So what is Continuous Deployment ?©LeanAgileMachineCreative Commons Licence
  5. 5. ...its incredibly hard©LeanAgileMachineCreative Commons Licence
  6. 6. ...even if you are...©LeanAgileMachineCreative Commons Licence
  7. 7. ...hard plus infinity for everyone else©LeanAgileMachineCreative Commons Licence
  8. 8. Continuous deployment example:©LeanAgileMachineCreative Commons Licence
  9. 9. ©LeanAgileMachineCreative Commons Licence
  10. 10. Typically: 25 deploys per day per developer©LeanAgileMachineCreative Commons Licence
  11. 11. Forward culture©LeanAgileMachineCreative Commons Licence
  12. 12. So why go for continuous deployment?©LeanAgileMachineCreative Commons Licence
  13. 13. ©LeanAgileMachineCreative Commons Licence
  14. 14. ©LeanAgileMachineCreative Commons Licence
  15. 15. ©LeanAgileMachineCreative Commons Licence
  16. 16. ©LeanAgileMachineCreative Commons Licence
  17. 17. ©LeanAgileMachine Creative Commons Licence
  18. 18. Understanding the businessTable stakes /foundations DifferentiatorsSpoilers Accelerators©LeanAgileMachineCreative Commons Licence
  19. 19. ©LeanAgileMachineCreative Commons Licence
  20. 20. Benefits©LeanAgileMachineCreative Commons Licence
  21. 21. Where to get started ??©LeanAgileMachineCreative Commons Licence
  22. 22. Is your team / company ready ? A case study in pain and dissapointment!©LeanAgileMachineCreative Commons Licence
  23. 23. Change can be expensive©LeanAgileMachineCreative Commons Licence
  24. 24. A long journey of discovery©LeanAgileMachineCreative Commons Licence
  25. 25. Involving the whole business©LeanAgileMachineCreative Commons Licence
  26. 26. Understanding of Value©LeanAgileMachineCreative Commons Licence
  27. 27. The right motivation©LeanAgileMachineCreative Commons Licence
  28. 28. What is the goal?©LeanAgileMachineCreative Commons Licence
  29. 29. Where to start ??©LeanAgileMachineCreative Commons Licence
  30. 30. Visualise how you do IT...©LeanAgileMachineCreative Commons Licence
  31. 31. Kanban – a wall of Facts©LeanAgileMachineCreative Commons Licence
  32. 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. 33. Value stream mapping The (often wide) path to getting things done Activities that get things done effectively©LeanAgileMachineCreative Commons Licence
  34. 34. Software development©LeanAgileMachineCreative Commons Licence
  35. 35. Software development©LeanAgileMachineCreative Commons Licence
  36. 36. ©LeanAgileMachineCreative Commons Licence
  37. 37. Include the whole process... Strategy to shiped Budgeting Business sign off Deployment dry run©LeanAgileMachineCreative Commons Licence
  38. 38. Improve the foundations©LeanAgileMachineCreative Commons Licence
  39. 39. Monitoring your servers● Nagios / NagVis● The Dude● Microsoft Operations Manager● Outsource IT...©LeanAgileMachineCreative Commons Licence
  40. 40. ©LeanAgileMachineCreative Commons Licence
  41. 41. ©LeanAgileMachineCreative Commons Licence
  42. 42. ©LeanAgileMachineCreative Commons Licence
  43. 43. ©LeanAgileMachineCreative Commons Licence
  44. 44. ©LeanAgileMachineCreative Commons Licence
  45. 45. Sever Provisioning©LeanAgileMachineCreative Commons Licence
  46. 46. Its all virtual these days...©LeanAgileMachineCreative Commons Licence
  47. 47. ©LeanAgileMachineCreative Commons Licence
  48. 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. 49. Managing VMs is easy©LeanAgileMachineCreative Commons Licence
  50. 50. Automating Virtual Machines©LeanAgileMachineCreative Commons Licence
  51. 51. Vagrant – simple to use ● Requirements  Ruby  Virtualbox  Chef / Puppet for other VM systems©LeanAgileMachineCreative Commons Licence
  52. 52. Consistent environments©LeanAgileMachineCreative Commons Licence
  53. 53. Automated server management Puppet / Chef / Rex ©LeanAgileMachine Creative Commons Licence
  54. 54. Disaster recovery for learning©LeanAgileMachineCreative Commons Licence
  55. 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. 56. Deployment Strategies©LeanAgileMachineCreative Commons Licence
  57. 57. If it hurts, do it more often©LeanAgileMachineCreative Commons Licence
  58. 58. Segmented deploys Different customers / different expectations©LeanAgileMachineCreative Commons Licence
  59. 59. Timely deployments Cost of delay ? When is the software valuable ?©LeanAgileMachineCreative Commons Licence
  60. 60. Smaller deployments©LeanAgileMachineCreative Commons Licence
  61. 61. Visualise deployment strategies??©LeanAgileMachineCreative Commons Licence
  62. 62. Managing your code©LeanAgileMachineCreative Commons Licence
  63. 63. It compiles, ship it!! Ship It Compile©LeanAgileMachineCreative Commons Licence
  64. 64. Automated builds Design around common patterns for building Should have valuable reason for doing something different SBT©LeanAgileMachineCreative Commons Licence
  65. 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. 66. Local repositories Nexus Artefactory DVCS©LeanAgileMachineCreative Commons Licence
  67. 67. Build tools – continuous feedback Maven 3 Shell Simple Build Tool ~Tests©LeanAgileMachineCreative Commons Licence
  68. 68. Coding fast feedback JavaScript©LeanAgileMachineCreative Commons Licence
  69. 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. 70. Behaviour Driven Developent©LeanAgileMachineCreative Commons Licence
  71. 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. 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. 73. ©LeanAgileMachineCreative Commons Licence
  74. 74. Git Workflow©LeanAgileMachineCreative Commons Licence
  75. 75. Git architecure (logical)©LeanAgileMachineCreative Commons Licence
  76. 76. ©LeanAgileMachineCreative Commons Licence
  77. 77. Change-set history©LeanAgileMachineCreative Commons Licence
  78. 78. ©LeanAgileMachineCreative Commons Licence
  79. 79. Code reviews DVCS push requests©LeanAgileMachineCreative Commons Licence
  80. 80. Central or Distributed Version control©LeanAgileMachineCreative Commons Licence
  81. 81. Centralised team©LeanAgileMachineCreative Commons Licence
  82. 82. Centralised issuesFear of breaking thebuild  unnecessary branching  delayed commitsOff-line support?Any redundancy inversioning server?©LeanAgileMachineCreative Commons Licence
  83. 83. Managed Distributed team©LeanAgileMachineCreative Commons Licence
  84. 84. Continuous Integration What When How long Run specifications / unit tests Reports Actions to initiate©LeanAgileMachineCreative Commons Licence
  85. 85. CI Server basics©LeanAgileMachineCreative Commons Licence
  86. 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. 87. ©LeanAgileMachineCreative Commons Licence
  88. 88. ©LeanAgileMachineCreative Commons Licence
  89. 89. CI Server lights©LeanAgileMachineCreative Commons Licence
  90. 90. Ultimate Wallboards©LeanAgileMachineCreative Commons Licence
  91. 91. Issue ticker Stream of issues flowing Highlight new features, overdue items, critical issues, time related news, etc©LeanAgileMachineCreative Commons Licence
  92. 92. ©LeanAgileMachineCreative Commons Licence
  93. 93. UltimateWallboard .com©LeanAgileMachineCreative Commons Licence
  94. 94. More than compiling code...conf/tomcat-users.xml<user username=”bamboo” password=”bamboo” roles=”manager-script,manager-gui”/> ©LeanAgileMachine Creative Commons Licence
  95. 95. One click deploy©LeanAgileMachineCreative Commons Licence
  96. 96. Architect for deployment Modular systems Simple interfaces Supported by acceptance tests (specifications) Automate low value tasks©LeanAgileMachineCreative Commons Licence
  97. 97. Final thoughts©LeanAgileMachineCreative Commons Licence
  98. 98. Predictability / Cadence Smaller tasks Understanding you capacity©LeanAgileMachineCreative Commons Licence
  99. 99. Communicate effectively©LeanAgileMachineCreative Commons Licence
  100. 100. Feedback©LeanAgileMachineCreative Commons Licence
  101. 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. 102. Benefits©LeanAgileMachineCreative Commons Licence
  103. 103. Thank you©LeanAgileMachineCreative Commons Licence
  104. 104. Feedback & Refs @JR0cket Please note: Very few bulletpoints were hurt during the making of this presentation©LeanAgileMachineCreative Commons Licence
  105. 105. The big-ish picture©LeanAgileMachineCreative Commons Licence
  106. 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. 107. A tool to collaborate©LeanAgileMachineCreative Commons Licence
  108. 108. Visualising the workload©LeanAgileMachineCreative Commons Licence
  109. 109. Pull system©LeanAgileMachineCreative Commons Licence
  110. 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. 111. Experditing lane©LeanAgileMachineCreative Commons Licence
  112. 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. 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. 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. 115. ©LeanAgileMachineCreative Commons Licence
  116. 116. Washing line©LeanAgileMachineCreative Commons Licence
  117. 117. RSPB Royal Society for the protection of Bulletpoints©LeanAgileMachineCreative Commons Licence
  118. 118. Change at speed of deployment©LeanAgileMachineCreative Commons Licence
  119. 119. Be as creative as needed©LeanAgileMachineCreative Commons Licence
  120. 120. Managing the change©LeanAgileMachineCreative Commons Licence
  121. 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. 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. 123. Lean Startup● Business canvas model● Real options● Last responsible moment● Least responsible change©LeanAgileMachineCreative Commons Licence
  124. 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. 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. 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