From macro to micro goto

1,054 views
892 views

Published on

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

No Downloads
Views
Total views
1,054
On SlideShare
0
From Embeds
0
Number of Embeds
135
Actions
Shares
0
Downloads
26
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

From macro to micro goto

  1. 1. From Macro To Micro Sam Newman ThoughtWorks
  2. 2. #gotoaar @samnewman
  3. 3. #gotoaar @samnewman
  4. 4. #gotoaar @samnewman
  5. 5. Durability #gotoaar @samnewman
  6. 6. Technology #gotoaar @samnewman
  7. 7. Geography #gotoaar @samnewman
  8. 8. Team Structure & Organisation #gotoaar @samnewman
  9. 9. Speed Of Change #gotoaar @samnewman
  10. 10. http://bit.ly/GeeCon2012SamN #gotoaar @samnewman
  11. 11. What makes a good service? #gotoaar @samnewman
  12. 12. High Cohesion #gotoaar @samnewman
  13. 13. Loose Coupling #gotoaar @samnewman
  14. 14. #gotoaar @samnewman
  15. 15. #gotoaar @samnewman
  16. 16. #gotoaar @samnewman
  17. 17. #gotoaar @samnewman
  18. 18. #gotoaar @samnewman
  19. 19. #gotoaar @samnewman
  20. 20. #gotoaar @samnewman
  21. 21. #gotoaar @samnewman
  22. 22. #gotoaar @samnewman
  23. 23. #gotoaar @samnewman
  24. 24. #gotoaar @samnewman
  25. 25. Bounded Context #gotoaar @samnewman
  26. 26. "The delimited applicability of a particular model. BOUNDING CONTEXTS gives team members a clear and shared understanding of what has to be consistent and what can develop independently." #gotoaar @samnewman
  27. 27. A specific responsibility enforced by explicit boundaries ! http://www.sapiensworks.com/blog/post/ 2012/04/17/DDD-The-Bounded-ContextExplained.aspx #gotoaar @samnewman
  28. 28. #gotoaar @samnewman
  29. 29. #gotoaar @samnewman
  30. 30. Add to cart #gotoaar @samnewman
  31. 31. Add to cart Checkout #gotoaar @samnewman
  32. 32. Add to cart Checkout #gotoaar View Latest Releases @samnewman
  33. 33. Search Add to cart Checkout #gotoaar View Latest Releases @samnewman
  34. 34. Search Add to cart Checkout View Latest Releases Listen To Previews #gotoaar @samnewman
  35. 35. Checkout Add to cart Search View Latest Releases Listen To Previews #gotoaar @samnewman
  36. 36. Checkout Shopping Cart Add to cart Search Catalog View Latest Releases Music Library Listen To Previews #gotoaar @samnewman
  37. 37. #gotoaar @samnewman
  38. 38. #gotoaar @samnewman
  39. 39. MusikShopMono #gotoaar @samnewman
  40. 40. MusikShopMono Warehouse Catalog #gotoaar Finance Recommendation @samnewman
  41. 41. That was the easy bit #gotoaar @samnewman
  42. 42. Enter the DB #gotoaar @samnewman
  43. 43. #gotoaar @samnewman
  44. 44. MusikShopMono DB #gotoaar @samnewman
  45. 45. Recomendation MusicShopMono Service DB Schema #gotoaar @samnewman
  46. 46. MusicShopMono Recomendation Service DB Schema #gotoaar @samnewman
  47. 47. MusicShopMono Recomendation Service DB Schema #gotoaar @samnewman
  48. 48. MusikShopMono Warehouse Finance Catalog Recommendation Repository DB #gotoaar @samnewman
  49. 49. MusikShopMono Finance Warehouse Catalog Recommendation DB #gotoaar @samnewman
  50. 50. #gotoaar @samnewman
  51. 51. #gotoaar @samnewman
  52. 52. MusikShopMono Catalog #gotoaar @samnewman
  53. 53. MusikShopMono Catalog Line Items #gotoaar @samnewman
  54. 54. MusikShopMono Catalog Finance Line Items #gotoaar @samnewman
  55. 55. MusikShopMono Catalog Finance Line Items Ledger #gotoaar @samnewman
  56. 56. MusikShopMono Catalog Finance Line Items Ledger #gotoaar @samnewman
  57. 57. MusikShopMono Catalog Finance Line Items Ledger #gotoaar @samnewman
  58. 58. MusikShopMono Catalog Finance Line Items Ledger #gotoaar @samnewman
  59. 59. MusikShopMono Catalog Finance Line Items Ledger #gotoaar @samnewman
  60. 60. MusikShopMono Catalog Finance Line Items Ledger #gotoaar @samnewman
  61. 61. MusikShopMono Catalog Finance Line Items Ledger #gotoaar @samnewman
  62. 62. MusikShop System Catalog Service #gotoaar Finance Service @samnewman
  63. 63. MusikShop System Catalog Service #gotoaar Finance Service @samnewman
  64. 64. MusikShop System Catalog Service Finance Service Line Items #gotoaar @samnewman
  65. 65. MusikShop System Catalog Service Line Items #gotoaar Finance Service Ledger @samnewman
  66. 66. MusikShop System Catalog Service Finance Service /sku/185 Line Items #gotoaar Ledger @samnewman
  67. 67. MusikShopMono Finance Warehouse Catalog Country Codes #gotoaar @samnewman
  68. 68. MusikShopMono Finance Warehouse Catalog Country Codes Country Codes #gotoaar Country Codes @samnewman
  69. 69. MusikShopMono Finance Warehouse Catalog #gotoaar @samnewman
  70. 70. MusikShopMono Finance Warehouse Customer Record #gotoaar @samnewman
  71. 71. reify #gotoaar @samnewman
  72. 72. #gotoaar @samnewman
  73. 73. MusikShop Finance Warehouse Customer Record #gotoaar @samnewman
  74. 74. MusikShop Finance Warehouse Customer Customer Record #gotoaar @samnewman
  75. 75. MusikShop System Finance Service Warehouse Service Customer Service #gotoaar @samnewman
  76. 76. MusikShop Catalog Warehouse Item #gotoaar @samnewman
  77. 77. MusikShop Catalog Item #gotoaar Warehouse Bee Gees Hits | $4.99 | 45 @samnewman
  78. 78. MusikShop Catalog Item #gotoaar Warehouse Bee Gees Hits | $4.99 | 45 @samnewman
  79. 79. MusikShop Catalog Item #gotoaar Warehouse Bee Gees Hits | $4.99 | 45 @samnewman
  80. 80. MusikShop Catalog Catalog Item #gotoaar Warehouse Stock Levels @samnewman
  81. 81. #gotoaar @samnewman
  82. 82. #gotoaar @samnewman
  83. 83. #gotoaar @samnewman
  84. 84. #gotoaar @samnewman
  85. 85. DB #gotoaar @samnewman
  86. 86. DB Cost Of Change #gotoaar @samnewman
  87. 87. #gotoaar @samnewman
  88. 88. Microservices #gotoaar @samnewman
  89. 89. UNIX Way #gotoaar @samnewman
  90. 90. “This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface” - Douglas McIlroy! #gotoaar @samnewman
  91. 91. #gotoaar @samnewman
  92. 92. Rule of Modularity: Developers should build a program out of simple parts connected by well defined interfaces, so problems are local, and parts of the program can be replaced in future versions to support new features. This rule aims to save time on debugging complex code that is complex, long, and unreadable. #gotoaar @samnewman
  93. 93. Rule of Simplicity: Developers should design for simplicity by looking for ways to break up program systems into small, straightforward cooperating pieces. This rule aims to discourage developers’ affection for writing “intricate and beautiful complexities” that are in reality bug prone programs. #gotoaar @samnewman
  94. 94. Rule of Parsimony: Developers should avoid writing big programs. This rule aims to prevent overinvestment of development time in failed or suboptimal approaches caused by the owners of the program’s reluctance to throw away visibly large pieces of work. Smaller programs are not only easier to optimize and maintain; they are easier to delete when deprecated. #gotoaar @samnewman
  95. 95. ls #gotoaar @samnewman
  96. 96. ls | grep “Sam” #gotoaar @samnewman
  97. 97. #gotoaar @samnewman
  98. 98. #gotoaar @samnewman
  99. 99. #gotoaar @samnewman
  100. 100. 200 lines of code #gotoaar @samnewman
  101. 101. Basket #gotoaar @samnewman
  102. 102. Basket Login #gotoaar @samnewman
  103. 103. Basket Login Registration #gotoaar @samnewman
  104. 104. Basket Login Registration Recommendation #gotoaar @samnewman
  105. 105. Basket Login Registration Recommendation - Now With Added Clojure! #gotoaar @samnewman
  106. 106. #gotoaar @samnewman
  107. 107. #gotoaar @samnewman
  108. 108. Test! #gotoaar @samnewman
  109. 109. #gotoaar @samnewman
  110. 110. #gotoaar @samnewman
  111. 111. #gotoaar @samnewman
  112. 112. #gotoaar @samnewman
  113. 113. #gotoaar @samnewman
  114. 114. #gotoaar @samnewman
  115. 115. Alert!!! #gotoaar @samnewman
  116. 116. #gotoaar @samnewman
  117. 117. #gotoaar @samnewman
  118. 118. #gotoaar @samnewman
  119. 119. #gotoaar @samnewman
  120. 120. #gotoaar @samnewman
  121. 121. UP #gotoaar @samnewman
  122. 122. DOWN #gotoaar @samnewman
  123. 123. #gotoaar @samnewman
  124. 124. #gotoaar @samnewman
  125. 125. UP? #gotoaar @samnewman
  126. 126. UP? #gotoaar DOWN? @samnewman
  127. 127. Number >> Size #gotoaar @samnewman
  128. 128. #gotoaar @samnewman
  129. 129. #gotoaar @samnewman
  130. 130. #gotoaar @samnewman
  131. 131. #gotoaar @samnewman
  132. 132. #gotoaar @samnewman
  133. 133. #gotoaar @samnewman
  134. 134. #gotoaar @samnewman
  135. 135. Summary - Identify your bounded contexts - This is an incremental journey - you won’t get it right first time - While size is important, number of services is often the limiting factor #gotoaar Understand the cost of change - and do just enough up front thinking! @samnewman
  136. 136. Thanks! snewman@thoughtworks.com @samnewman http://www.flickr.com/photos/janicskovsky/6362911179/ http://www.flickr.com/photos/mayhem/2939259129/ http://www.flickr.com/photos/clover_1/4855455737/ http://www.flickr.com/photos/safari_vacation/6384704645/ http://www.flickr.com/photos/moriza/292125851/ http://www.flickr.com/photos/hoyvinmayvin/4010761680/ http://www.flickr.com/photos/jakescreations/52860690/ http://www.flickr.com/photos/doug88888/5888519573/ http://www.flickr.com/photos/dannykboyd/4746718211/ http://www.flickr.com/photos/anantns/6765139575/ http://www.flickr.com/photos/pen3ya/2011092846/

×