Continuous Delivery Antipatterns

2,079 views
1,857 views

Published on

Continuous Delivery Antipatterns slides from this year's Devoxx, enjoy!

Published in: Technology, Business
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,079
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
35
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

Continuous Delivery Antipatterns

  1. 1. Continuous Delivery Antipatterns Andrzej Grzesik ebay #DV13-cda @ags313
  2. 2. cd antipatterns; ls -al Andrzej Grzesik ebay #DV13-cda @ags313
  3. 3. Andrzej Grzesik Demo @ags313 andrzej@grzesik.it andrzejgrzesik.info #DV13-cda @ags313
  4. 4. MY OPINIONS ARE MY OWN disclaimer #DV13-cda @ags313
  5. 5. ABOUT:ME I’m proud of: #DV13-cda @ags313
  6. 6. I HATE COMPUTERS disclaimer ;-) #DV13-cda @ags313
  7. 7. QUESTIONS? #DV13-cda @ags313
  8. 8. NO! 42 IT DEPENDS answers! #DV13-cda @ags313
  9. 9. QUESTIONS? ask them right away! #DV13-cda @ags313
  10. 10. #DEVOXX keep on tweeting! #DV13-cda @ags313
  11. 11. TL; DR: RELEASE MORE OFTEN! and don’t listen to ‘no-can-do’s #DV13-cda @ags313
  12. 12. SOFTWARE is a people problem #DV13-cda @ags313
  13. 13. IN THE BEGINNING #DV13-cda @ags313
  14. 14. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. #DV13-cda @ags313
  15. 15. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. #DV13-cda @ags313
  16. 16. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. agile manifesto, 2001 #DV13-cda @ags313
  17. 17. DELIVERY IS ORGANIZATION-SPECIFIC #DV13-cda @ags313
  18. 18. CHANGE SCENARIO #DV13-cda @ags313
  19. 19. 1. PRIORITIZE PROBLEMS #DV13-cda @ags313
  20. 20. 2. FIX FIRST #DV13-cda @ags313
  21. 21. REPEAT #DV13-cda @ags313
  22. 22. A LONG TIME AGO IN A GALAXY FAR, FAR AWAY… #DV13-cda @ags313
  23. 23. SYSTEM (TM) #DV13-cda @ags313
  24. 24. DEVELOPERS #DV13-cda @ags313
  25. 25. DEVELOPERS everywhere-sourced #DV13-cda @ags313
  26. 26. OH, WAIT #DV13-cda @ags313
  27. 27. #DV13-cda @ags313
  28. 28. PUSH THEIR CODE #DV13-cda @ags313
  29. 29. SITE BREAKS #DV13-cda @ags313
  30. 30. SITE BREAKS for two days #DV13-cda @ags313
  31. 31. DURING HOT SEASON #DV13-cda @ags313
  32. 32. ALL ROLL-BACK! #DV13-cda @ags313
  33. 33. TO WHERE? #DV13-cda @ags313
  34. 34. FROM WHERE? #DV13-cda @ags313
  35. 35. PROBLEM: NO IDEA WHAT IS WHERE #DV13-cda @ags313
  36. 36. GIT PUSH --FORCE PROD #randomhashisbetterthannone #DV13-cda @ags313
  37. 37. DO: --VERSION #DV13-cda @ags313
  38. 38. BETTER: DO SEMANTIC VERSIONING http://semver.org/ #DV13-cda @ags313
  39. 39. DO: KNOW WHAT IS WHERE #DV13-cda @ags313
  40. 40. DO: KNOW WHAT IS WHERE (have a dashboard) #DV13-cda @ags313
  41. 41. GLU https://github.com/pongasoft/glu #DV13-cda @ags313
  42. 42. PROBLEM: MANY TEAMS/UNSTABLE CODE #DV13-cda @ags313
  43. 43. MULTIPLE REPO IS OK one for dev, one for releases #DV13-cda @ags313
  44. 44. GIT FLOW IS OK http://nvie.com/posts/a-successful-git-branching-model/ #DV13-cda @ags313
  45. 45. PERSONAL FAVOURITE: STABLE MASTER #DV13-cda @ags313
  46. 46. BUSINESS CONCLUSION: #DV13-cda @ags313
  47. 47. #DV13-cda @ags313
  48. 48. RELEASES == RISK let’s avoid them! #DV13-cda @ags313
  49. 49. WHAT DO YOU GET? #DV13-cda @ags313
  50. 50. PROBLEM: FEAR OF RELEASING #DV13-cda @ags313
  51. 51. STAGNATION CREEPS IN #DV13-cda @ags313
  52. 52. QUIET PERIODS #DV13-cda @ags313
  53. 53. RELEASE ‘TRAINS’ #DV13-cda @ags313
  54. 54. RC, BETA, GOLD #DV13-cda @ags313
  55. 55. SOLUTION: INVOLVE BUSINESS a.k.a. ‘manage stakeholders’ #DV13-cda @ags313
  56. 56. SMALL CHANGES SHOULD HAPPEN QUICKLY great selling point #DV13-cda @ags313
  57. 57. BUILD ENVS #DV13-cda @ags313
  58. 58. OK, LET’S HAVE A PIPELINE #DV13-cda @ags313
  59. 59. PROBLEM: SLOW #DV13-cda @ags313
  60. 60. #DV13-cda @ags313
  61. 61. SOLUTION: PARALELLIZE #DV13-cda @ags313
  62. 62. WHICH PART? #DV13-cda @ags313
  63. 63. #DV13-cda @ags313
  64. 64. FREE WIN: DECOUPLED DESIGN #DV13-cda @ags313
  65. 65. PROBLEM: RECOMPILING #DV13-cda @ags313
  66. 66. #DV13-cda @ags313
  67. 67. #DV13-cda @ags313
  68. 68. #DV13-cda @ags313
  69. 69. HOW DO I REPLICATE PRODUCTION? #DV13-cda @ags313
  70. 70. DO: USE A BINARY REPOSITORY #DV13-cda @ags313
  71. 71. PROBLEM: SEPARATE TEAMS #DV13-cda @ags313
  72. 72. RELEASE TEAM dealing with ‘danger‘ #DV13-cda @ags313
  73. 73. SYMPTOM: DEALING WITH DANGER #DV13-cda @ags313
  74. 74. LIKES TO BE MANUAL ‘job security‘ #DV13-cda @ags313
  75. 75. US VS THEM ‘leave me alone, I’m important’ #DV13-cda @ags313
  76. 76. RELEASE PROCESSES #DV13-cda @ags313
  77. 77. CURIOUS RELEASE PROCESSES #DV13-cda @ags313
  78. 78. WORK EXPANDS TO FILL THE TIME AVAILABLE FOR ITS COMPLETION Parkinson’s Law #DV13-cda @ags313
  79. 79. TOO CURIOUS PROCESSES LEAD TO #DV13-cda @ags313
  80. 80. UNOFFICIAL RELEASES #DV13-cda @ags313
  81. 81. UNOFFICIAL RELEASES (don’t do them) #DV13-cda @ags313
  82. 82. BUNKERS #DV13-cda @ags313
  83. 83. #DV13-cda @ags313
  84. 84. SOLUTION: ENCOURAGE INTERACTIONS #DV13-cda @ags313
  85. 85. BREAK && INTEGRATE #DV13-cda @ags313
  86. 86. BREAK && INTEGRATE repeatedly #DV13-cda @ags313
  87. 87. GAMES ARE AWESOME! repeat the event #DV13-cda @ags313
  88. 88. PROBLEM: MANUAL INFRASTRUCTURE #DV13-cda @ags313
  89. 89. INFRASTRUCTURE #DV13-cda @ags313
  90. 90. WE USE CHEF, WE’RE SAFE ^^ #DV13-cda @ags313
  91. 91. #DV13-cda @ags313
  92. 92. DID YOU TEST? #DV13-cda @ags313
  93. 93. #DV13-cda @ags313
  94. 94. FOOD CRITIC lint for chef #DV13-cda @ags313
  95. 95. lint for chef #DV13-cda @ags313
  96. 96. PUPPET VS CHEF VS … #DV13-cda @ags313
  97. 97. PROBLEM: ENV BUILDS #DV13-cda @ags313
  98. 98. SLOW? #DV13-cda @ags313
  99. 99. #DV13-cda @ags313
  100. 100. PROBLEM: INTERNET #DV13-cda @ags313
  101. 101. QUIZ #DV13-cda @ags313
  102. 102. #DV13-cda @ags313
  103. 103. NEED INTERNET TO BUILD? #DV13-cda @ags313
  104. 104. OF COURSE! #DV13-cda @ags313
  105. 105. #DV13-cda @ags313
  106. 106. RUBYGEMS.ORG CPAN.ORG MAVEN.ORG #DV13-cda @ags313
  107. 107. RUBYGEMS.ORG CPAN.ORG MAVEN.ORG go down! #DV13-cda @ags313
  108. 108. MAKE YOUR BUILD RUN WITHOUT INTERNET or at least try, you’ll learn fun things :-) #DV13-cda @ags313
  109. 109. APPLICATION AND ENVIRONMENT #DV13-cda @ags313
  110. 110. SAVE TIME AND NERVES #DV13-cda @ags313
  111. 111. BINARY REPO/PROXY/… #DV13-cda @ags313
  112. 112. PROBLEM: NO RUNTIME UPGRADE #DV13-cda @ags313
  113. 113. #DV13-cda @ags313
  114. 114. #DV13-cda @ags313
  115. 115. #DV13-cda @ags313
  116. 116. DESKTOPS #DV13-cda @ags313
  117. 117. #DV13-cda @ags313
  118. 118. FIREFOX IS UPDATING and you can not use it #DV13-cda @ags313
  119. 119. MOBILE APPS #DV13-cda @ags313
  120. 120. WEBVIEW IS NICE #DV13-cda @ags313
  121. 121. FREQUENT RELEASES make your user curious #DV13-cda @ags313
  122. 122. MAKE USERS SAY BYE #DV13-cda @ags313
  123. 123. CHANGE BACKEND YOU CAN #DV13-cda @ags313
  124. 124. FORCING DOESN’T WORK #DV13-cda @ags313
  125. 125. ASK IF NEW FEATURES THEY WANT #DV13-cda @ags313
  126. 126. PROBLEM: DEPLOYMENT FAILURES #DV13-cda @ags313
  127. 127. #DV13-cda @ags313
  128. 128. DEPLOYMENTS DO YOU TRACK THEM? #DV13-cda @ags313
  129. 129. FAILED DEPLOYMENT PROCEDURE ROLLBACK? OR DOWNTIME? #DV13-cda @ags313
  130. 130. DO: TEST YOUR ROLLBACK #DV13-cda @ags313
  131. 131. AS YOU TEST YOUR BACKUPS #DV13-cda @ags313
  132. 132. PROBLEM: STATE #DV13-cda @ags313
  133. 133. LONG RUNNING …… #DV13-cda @ags313
  134. 134. SAGAS? #DV13-cda http://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf @ags313
  135. 135. DATABASES… #DV13-cda @ags313
  136. 136. ENVIRONMENTS #DV13-cda @ags313
  137. 137. LOVE PARTIAL FAILURES #DV13-cda @ags313
  138. 138. DO: BUILD IN SWITCHES #DV13-cda @ags313
  139. 139. DO: APP IS ENV AWARE #DV13-cda @ags313
  140. 140. DEVENV #DV13-cda @ags313
  141. 141. AUTOMATE IT! #DV13-cda @ags313
  142. 142. CHEF, PUPPET, ANSIMBLE, DOCKER, VAGRANT pick any #DV13-cda @ags313
  143. 143. package "haproxy" do! action :install! end! ! template "/etc/haproxy/haproxy.cfg" do! source "haproxy.cfg.erb"! owner "root"! group "root"! mode 0644! notifies :restart, "service[haproxy]"! end! ! service "haproxy" do! supports :restart => true! action [:enable, :start]! end! #DV13-cda @ags313
  144. 144. RELEASE! #DV13-cda @ags313
  145. 145. RELEASE! …the Kraken #DV13-cda @ags313
  146. 146. #DV13-cda @ags313
  147. 147. thanks! #DV13-cda @ags313
  148. 148. thanks! please tweet && feedback! #DV13-cda @ags313

×