Designing for rapid release goto 2012

908 views
797 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
908
On SlideShare
0
From Embeds
0
Number of Embeds
81
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Designing for rapid release goto 2012

  1. 1. DESIGNING FOR RAPID RELEASE   Sam Newman   ThoughtWorks
  2. 2. We’re hiring... GOTO: Aarhus 2012 @samnewman
  3. 3. Not Him We’re hiring... GOTO: Aarhus 2012 @samnewman
  4. 4. GOTO: Aarhus 2012 @samnewman
  5. 5. We’re hiring... GOTO: Aarhus 2012 @samnewman
  6. 6. Why is rapid release important? GOTO: Aarhus 2012 @samnewman
  7. 7. What criteria influence design? GOTO: Aarhus 2012 @samnewman
  8. 8. Scaling What criteria influence design? GOTO: Aarhus 2012 @samnewman
  9. 9. Scaling Durability What criteria influence design? GOTO: Aarhus 2012 @samnewman
  10. 10. Scaling Durability What criteria influence design? Geographical GOTO: Aarhus 2012 @samnewman
  11. 11. Scaling Compliance Durability What criteria influence design? Geographical GOTO: Aarhus 2012 @samnewman
  12. 12. Scaling Compliance Durability What criteria influence design? Geographical GOTO: Aarhus 2012 Technology @samnewman
  13. 13. Performance Scaling Compliance Durability What criteria influence design? Geographical GOTO: Aarhus 2012 Technology @samnewman
  14. 14. What about making it easy to release? GOTO: Aarhus 2012 @samnewman
  15. 15. GOTO: Aarhus 2012 @samnewman
  16. 16. Make it quick to make a change GOTO: Aarhus 2012 @samnewman
  17. 17. Make it quick to make a change Make it quick to deploy the change GOTO: Aarhus 2012 @samnewman
  18. 18. Make it quick to make a change Make it quick to deploy the change Reduce the risk of releasing GOTO: Aarhus 2012 @samnewman
  19. 19. MusikShop v1 GOTO: Aarhus 2012 @samnewman
  20. 20. MusikShop v1 GOTO: Aarhus 2012 @samnewman
  21. 21. MusikShop v2 GOTO: Aarhus 2012 @samnewman
  22. 22. v23 v1 v9 v14 MusikShop GOTO: Aarhus 2012 @samnewman
  23. 23. v23 v1 v9 v14 MusikShop GOTO: Aarhus 2012 @samnewman
  24. 24. v23 v2 v9 v14 MusikShop GOTO: Aarhus 2012 @samnewman
  25. 25. GOTO: Aarhus 2012 @samnewman
  26. 26. The Same Change... GOTO: Aarhus 2012 @samnewman
  27. 27. The Same Change... ...resulting in very different deployments GOTO: Aarhus 2012 @samnewman
  28. 28. GOTO: Aarhus 2012 @samnewman
  29. 29. GOTO: Aarhus 2012 @samnewman
  30. 30. GOTO: Aarhus 2012 @samnewman
  31. 31. GOTO: Aarhus 2012 @samnewman
  32. 32. GOTO: Aarhus 2012 @samnewman
  33. 33. GOTO: Aarhus 2012 @samnewman
  34. 34. GOTO: Aarhus 2012 @samnewman
  35. 35. ... GOTO: Aarhus 2012 @samnewman
  36. 36. Each release is a rollback point ... GOTO: Aarhus 2012 @samnewman
  37. 37. Each release is a rollback point and a data gathering point ... GOTO: Aarhus 2012 @samnewman
  38. 38. Each release is a rollback point and a data gathering point ... GOTO: Aarhus 2012 and a release process practiced often is more likely to work and to be efficient @samnewman
  39. 39. Small, Incremental Releases FTW! GOTO: Aarhus 2012 @samnewman
  40. 40. So how do we design our systems to allow for small changes? GOTO: Aarhus 2012 @samnewman
  41. 41. GOTO: Aarhus 2012 @samnewman
  42. 42. MusikShop GOTO: Aarhus 2012 @samnewman
  43. 43. MusikShop Rekomend Lib GOTO: Aarhus 2012 @samnewman
  44. 44. MusikShop Rekomend Lib Invoice Creation GOTO: Aarhus 2012 @samnewman
  45. 45. MusikShop Rekomend Lib Invoice Creation ... GOTO: Aarhus 2012 @samnewman
  46. 46. MusikShop Rekomend Lib Invoice Creation ... String Utils GOTO: Aarhus 2012 @samnewman
  47. 47. MusikShop Rekomend Lib Small units - easier to reason about Invoice Creation ... String Utils GOTO: Aarhus 2012 @samnewman
  48. 48. MusikShop Rekomend Lib Invoice Creation Small units - easier to reason about Fast CI turnaround cycles ... String Utils GOTO: Aarhus 2012 @samnewman
  49. 49. GOTO: Aarhus 2012 @samnewman
  50. 50. MusikShop v1 GOTO: Aarhus 2012 @samnewman
  51. 51. MusikShop v1 Rekomend Lib v134 GOTO: Aarhus 2012 @samnewman
  52. 52. MusikShop v1 Rekomend Lib v134 GOTO: Aarhus 2012 Rekomend Lib v200 @samnewman
  53. 53. MusikShop v1 MusikShop v2 Rekomend Lib v134 Rekomend Lib v200 GOTO: Aarhus 2012 @samnewman
  54. 54. MusikShop v1 MusikShop v2 Rekomend Lib v134 Rekomend Lib v200 Change to a statically linked library = new deployment of the application GOTO: Aarhus 2012 @samnewman
  55. 55. MusikShop v1 GOTO: Aarhus 2012 @samnewman
  56. 56. MusikShop v1 Rekomender v124 GOTO: Aarhus 2012 @samnewman
  57. 57. MusikShop v1 Rekomender v124 GOTO: Aarhus 2012 @samnewman
  58. 58. MusikShop v1 Rekomender v124 GOTO: Aarhus 2012 Rekomender v200 @samnewman
  59. 59. MusikShop v1 Rekomender v124 GOTO: Aarhus 2012 Rekomender v200 @samnewman
  60. 60. MusikShop v1 Rekomender v124 GOTO: Aarhus 2012 @samnewman
  61. 61. MusikShop v1 Rekomender v124 GOTO: Aarhus 2012 Rekomender v200 @samnewman
  62. 62. MusikShop v1 Smoke Test Rekomender v124 GOTO: Aarhus 2012 Rekomender v200 @samnewman
  63. 63. MusikShop v1 Showcase Smoke Test Rekomender v124 GOTO: Aarhus 2012 Rekomender v200 @samnewman
  64. 64. MusikShop v1 Showcase Smoke Test Rekomender v124 GOTO: Aarhus 2012 Rekomender v200 @samnewman
  65. 65. MusikShop v1 Showcase Smoke Test Rekomender v124 Rekomender v200 Blue/Green Deployments GOTO: Aarhus 2012 @samnewman
  66. 66. GOTO: Aarhus 2012 @samnewman
  67. 67. GOTO: Aarhus 2012 @samnewman
  68. 68. What can stop blue/ green deployments? GOTO: Aarhus 2012 @samnewman
  69. 69. User GOTO: Aarhus 2012 @samnewman
  70. 70. User MusikShop v1 GOTO: Aarhus 2012 @samnewman
  71. 71. User MusikShop v1 State GOTO: Aarhus 2012 @samnewman
  72. 72. User MusikShop v1 MusikShop v2 State GOTO: Aarhus 2012 @samnewman
  73. 73. User MusikShop v1 MusikShop v2 State GOTO: Aarhus 2012 @samnewman
  74. 74. User MusikShop v1 MusikShop v2 State GOTO: Aarhus 2012 @samnewman
  75. 75. User MusikShop v1 MusikShop v2 State Avoid stateful services GOTO: Aarhus 2012 @samnewman
  76. 76. Expensive Hardware! GOTO: Aarhus 2012 @samnewman
  77. 77. www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The Brakes’! Rekomender v124 Manual Circuit Breaker GOTO: Aarhus 2012 @samnewman
  78. 78. www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The Brakes’! Rekomender v124 Manual Circuit Breaker GOTO: Aarhus 2012 @samnewman
  79. 79. www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The We Can’t Rekomend Brakes’! Right Now! Rekomender v124 Manual Circuit Breaker GOTO: Aarhus 2012 @samnewman
  80. 80. www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The We Can’t Rekomend Brakes’! Right Now! Rekomender Rekomender v124 v200 Manual Circuit Breaker GOTO: Aarhus 2012 @samnewman
  81. 81. www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The We Can’t Rekomend Brakes’! Right Now! Rekomender Rekomender v124 v200 Smoke Test Manual Circuit Breaker GOTO: Aarhus 2012 @samnewman
  82. 82. www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The We Can’t Rekomend Brakes’! Right Now! Rekomender Rekomender v124 v200 Smoke Test Manual Circuit Breaker GOTO: Aarhus 2012 @samnewman
  83. 83. www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The Brakes’! Rekomender Rekomender v124 v200 Smoke Test Manual Circuit Breaker GOTO: Aarhus 2012 @samnewman
  84. 84. GOTO: Aarhus 2012 @samnewman
  85. 85. www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The Brakes’! Rekomender v124 Async Behaviour GOTO: Aarhus 2012 @samnewman
  86. 86. www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The Brakes’! Async Behaviour GOTO: Aarhus 2012 @samnewman
  87. 87. www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The Brakes’! Async Behaviour GOTO: Aarhus 2012 @samnewman
  88. 88. www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The Waiting... Brakes’! Async Behaviour GOTO: Aarhus 2012 @samnewman
  89. 89. www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The Waiting... Brakes’! Rekomender v200 Async Behaviour GOTO: Aarhus 2012 @samnewman
  90. 90. www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The Brakes’! Rekomender v200 Async Behaviour GOTO: Aarhus 2012 @samnewman
  91. 91. GOTO: Aarhus 2012 @samnewman
  92. 92. Things to watch for... GOTO: Aarhus 2012 @samnewman
  93. 93. The Trifle GOTO: Aarhus 2012 @samnewman
  94. 94. Musik Web The Trifle GOTO: Aarhus 2012 @samnewman
  95. 95. Musik Web Persistence The Trifle GOTO: Aarhus 2012 @samnewman
  96. 96. Musik Web Persistence The Trifle GOTO: Aarhus 2012 @samnewman
  97. 97. Musik Web Persistence The Trifle GOTO: Aarhus 2012 @samnewman
  98. 98. Musik Web Persistence The Trifle GOTO: Aarhus 2012 @samnewman
  99. 99. GOTO: Aarhus 2012 @samnewman
  100. 100. GOTO: Aarhus 2012 @samnewman
  101. 101. GOTO: Aarhus 2012 @samnewman
  102. 102. The Spider GOTO: Aarhus 2012 @samnewman
  103. 103. CD Ordering System The Spider GOTO: Aarhus 2012 @samnewman
  104. 104. Whitemail System CD Ordering System The Spider GOTO: Aarhus 2012 @samnewman
  105. 105. Whitemail System Data Wharehouse CD Ordering System The Spider GOTO: Aarhus 2012 @samnewman
  106. 106. Whitemail System Data Wharehouse CD Ordering System 3rd Party Supplier The Spider GOTO: Aarhus 2012 @samnewman
  107. 107. Whitemail System Data Wharehouse CD Ordering System Finance System 3rd Party Supplier The Spider GOTO: Aarhus 2012 @samnewman
  108. 108. Whitemail System Dumb System 1 Dumb System 2 Data Wharehouse CD Ordering System Dumb System 4 Finance System Dumb System 3 3rd Party Supplier The Spider GOTO: Aarhus 2012 @samnewman
  109. 109. GOTO: Aarhus 2012 @samnewman
  110. 110. GOTO: Aarhus 2012 @samnewman
  111. 111. “A set of capabilities on an endpoint” GOTO: Aarhus 2012 @samnewman
  112. 112. GOTO: Aarhus 2012 @samnewman
  113. 113. Add to cart GOTO: Aarhus 2012 @samnewman
  114. 114. Add to cart Checkout GOTO: Aarhus 2012 @samnewman
  115. 115. Add to cart Checkout GOTO: Aarhus 2012 View Latest Releases @samnewman
  116. 116. Search Add to cart Checkout GOTO: Aarhus 2012 View Latest Releases @samnewman
  117. 117. Search Add to cart Checkout View Latest Releases Listen To Previews GOTO: Aarhus 2012 @samnewman
  118. 118. Checkout Add to cart Search View Latest Releases Listen To Previews GOTO: Aarhus 2012 @samnewman
  119. 119. Checkout Shopping Cart Add to cart Search View Latest Catalog Releases Music Library Listen To Previews GOTO: Aarhus 2012 @samnewman
  120. 120. Model Services Based On Your Business Domain GOTO: Aarhus 2012 @samnewman
  121. 121. Musik Shop v1 Reko. v9 GOTO: Aarhus 2012 @samnewman
  122. 122. Musik Shop v1 Musik Shop v1 Reko. v9 Reko. v10 Internal Change GOTO: Aarhus 2012 @samnewman
  123. 123. Musik Shop v1 Musik Shop v1 Musik Shop v1 Reko. v9 Reko. v10 Reko. v10 Internal Change Expansion GOTO: Aarhus 2012 @samnewman
  124. 124. Musik Shop v1 Musik Shop v1 Musik Shop v1 Musik Shop v2 Reko. v9 Reko. v10 Reko. v10 Reko. v10 Expansion Interface Change Internal Change GOTO: Aarhus 2012 @samnewman
  125. 125. Rekomender V9 v1 Musik Shop GOTO: Aarhus 2012 @samnewman
  126. 126. Rekomender V9 Non-breaking expansion is to be preferred - but if you can’t... v1 Musik Shop GOTO: Aarhus 2012 @samnewman
  127. 127. Rekomender V9 v1 Non-breaking expansion is to be preferred - but if you can’t... v2 Musik Shop GOTO: Aarhus 2012 @samnewman
  128. 128. Rekomender V9 v1 Non-breaking expansion is to be preferred - but if you can’t... v2 Consider maintaining multiple service endpoints Musik Shop GOTO: Aarhus 2012 iOS App @samnewman
  129. 129. Rekomender V9 v1 Non-breaking expansion is to be preferred - but if you can’t... v2 Consider maintaining multiple service endpoints Musik Shop GOTO: Aarhus 2012 iOS App @samnewman
  130. 130. Service A Shared Lib v1 Service B Shared Lib v1 GOTO: Aarhus 2012 @samnewman
  131. 131. Service A Shared Lib v1 Service B Shared Lib v1 GOTO: Aarhus 2012 @samnewman
  132. 132. Service A Shared Lib v1 Service B Shared Lib v1 GOTO: Aarhus 2012 @samnewman
  133. 133. Service A Shared Lib v1 v2 Service B Shared Lib v1 GOTO: Aarhus 2012 @samnewman
  134. 134. Service A Shared Lib v1 v2 Beware of shared serialization protocols Service B Shared Lib v1 GOTO: Aarhus 2012 @samnewman
  135. 135. Service A Shared Lib v1 v2 WSDL-binding Beware of shared serialization protocols Service B Shared Lib v1 GOTO: Aarhus 2012 @samnewman
  136. 136. Service A Shared Lib v1 v2 WSDL-binding JAXB GOTO: Aarhus 2012 Beware of shared serialization protocols Service B Shared Lib v1 @samnewman
  137. 137. Service A Shared Lib v1 v2 WSDL-binding JAXB Java Serialization GOTO: Aarhus 2012 Beware of shared serialization protocols Service B Shared Lib v1 @samnewman
  138. 138. RFC 761 GOTO: Aarhus 2012 @samnewman
  139. 139. Postel’s Law: “Be conservative in what you do, be liberal in what you expect“ GOTO: Aarhus 2012 @samnewman
  140. 140. MusikShop Rekomender Consumer Driven Contracts GOTO: Aarhus 2012 @samnewman
  141. 141. MusikShop Rekomender Consumer Driven Contracts GOTO: Aarhus 2012 @samnewman
  142. 142. MusikShop Rekomender Consumer Driven Contracts GOTO: Aarhus 2012 @samnewman
  143. 143. MusikShop Rekomender Consumer Driven Contracts GOTO: Aarhus 2012 @samnewman
  144. 144. DATABASES! GOTO: Aarhus 2012 @samnewman
  145. 145. DATA IS COOL GOTO: Aarhus 2012 @samnewman
  146. 146. DATABASES ARE EVIL GOTO: Aarhus 2012 @samnewman
  147. 147. Rekomender MusikShop DB Schema GOTO: Aarhus 2012 @samnewman
  148. 148. MusikShop Rekomender DB Schema GOTO: Aarhus 2012 @samnewman
  149. 149. MusikShop Rekomender DB Schema GOTO: Aarhus 2012 @samnewman
  150. 150. MusikShop Rekomender Schema Schema DB Instance GOTO: Aarhus 2012 @samnewman
  151. 151. Each service owns its own data MusikShop Rekomender Schema Schema DB Instance GOTO: Aarhus 2012 @samnewman
  152. 152. MusikShop Rekomender RDMS RDMS GOTO: Aarhus 2012 @samnewman
  153. 153. MusikShop Rekomender RDMS RDMS Riak GOTO: Aarhus 2012 @samnewman
  154. 154. Rekomender RDBMS Riak GOTO: Aarhus 2012 @samnewman
  155. 155. Rekomender Release 1: Dual Write RDBMS GOTO: Aarhus 2012 Riak @samnewman
  156. 156. Rekomender Release 2: Read from Riak Release 1: Dual Write RDBMS GOTO: Aarhus 2012 Riak @samnewman
  157. 157. Rekomender Release 3: Retire RDMS Release 2: Read from Riak Release 1: Dual Write Riak GOTO: Aarhus 2012 @samnewman
  158. 158. MusikShop Rekomender GOTO: Aarhus 2012 @samnewman
  159. 159. MusikShop Rekomender GOTO: Aarhus 2012 AceSuggest @samnewman
  160. 160. MusikShop Rekomender GOTO: Aarhus 2012 AceSuggest @samnewman
  161. 161. MusikShop Rekomender GOTO: Aarhus 2012 Dark Launching! AceSuggest @samnewman
  162. 162. Decompose Your Systems Model Your Domain Get Interfaces Right Seperate Deployment From Release GOTO: Aarhus 2012 @samnewman
  163. 163. Questions? GOTO: Aarhus 2012 @samnewman
  164. 164. Thanks! @samnewman We’re hiring! GOTO: Aarhus 2012 @samnewman

×