Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
1
never done
building systems that are
jalewis@thoughtworks.com
@boicy
2
agile
XP
TDD
BDD
YAGNI
DRY
SOLID
Continuous Delivery
Refactoring
GoF
GRASP
emergent design
World of Warcraft
KISS
3
the future is scary
4
"ever accelerating progress of technology and changes in the mode
of human life, which gives the appearance of approachi...
5
“Around the world, laboring women produce forty-five thousand babies a day,
representing 1023 MIPS of processing power. A...
6
7
“Self-Driving Trucks Are Going to Hit Us Like a Human-Driven Truck”
https://medium.com/basic-income/self-driving-trucks-...
“If you aren’t worried about strong AI within the next 5-10
years then you aren’t working closely enough with AI
teams”
(p...
9
9
10
closer to home?
11
12
Singularity
12
Singularity
JavaScript
12
Singularity
JavaScript
Container
12
Singularity
JavaScript
Log aggregation
Container
13
even closer to home
HOW WE DESIGN SOFTWARE IS CHANGING
14
15
16
“the first post-devops architectural style”
Neal Ford
17
replaceable component architectures
Dan North
18
never done
19
never done
Incomplete
adjective
not having all the necessary or appropriate parts
19
never done
Incomplete
adjective
not having all the necessary or appropriate parts
20
never done
20
“This, milord, is my family's axe.
We have owned it for almost nine
hundred years, see. Of course,
sometimes it needed ...
21
microservices should be:
cheap to replace
and should allow us to go as
“fast as possible”?
quick to scale
able to withs...
22
Hardest things to do:
22
Hardest things to do: End-to-end testing
22
Hardest things to do: End-to-end testing
Independent deployment
22
Hardest things to do: End-to-end testing
Independent deployment
Service versioning / evolution
TESTING MICROSERVICES IS HARD
23
Service A
Service
Large
Medium
Small
TESTING MICROSERVICES IS HARD
23
Service A
Service
Large
Medium
Small
Service
Stub
TESTING MICROSERVICES IS HARD
23
Service A
Large
Medium
Small
INTEGRATING MICROSERVICES IS HARD
24
INTEGRATING MICROSERVICES IS HARD
24
Integration Test
INTEGRATING MICROSERVICES IS HARD
24
Integration Test Prod…
INTEGRATING MICROSERVICES IS HARD
24
Integration Test Prod…
INTEGRATING MICROSERVICES IS HARD
24
Integration Test Prod…
INTEGRATING MICROSERVICES IS HARD
24
Integration Test Prod…
25
26
WHAT DOES THIS MEAN
FOR THE CRAFT OF
SOFTWARE DEVELOPMENT?
27
<thinks>
28
29
well crafted software
steadily adding value
30
31
Nat Pryce
Steve Freeman
Dan North
Sydney ‘Hoppalong’ Redelinghuys
Jim Webber
Ian Robinson
Ivan Moore
Liz Keogh
Simon St...
31
Nat Pryce
Steve Freeman
Dan North
Sydney ‘Hoppalong’ Redelinghuys
Jim Webber
Ian Robinson
Ivan Moore
Liz Keogh
Simon St...
32
TW is an XP shop
33
agile
XP
TDD
BDD
YAGNI
DRY
SOLID
Continuous Delivery
Refactoring
GoF
GRASP
emergent design
World of Warcraft
KISS
34
does this still make sense?
35
35
Gemini Project, Rogallo wing
Source: wikipedia.org
36
<thinks>
37
Gemini Project, Rogallo wing
Source: wikipedia.org
it’s turtles all the way down
38
agile
XP
TDD
BDD
YAGNI
DRY
SOLID
Continuous Delivery
Refactoring
GoF
GRASP
emergent design
World of Warcraft
KISS
39
agile
XP
TDD
BDD
YAGNI
DRY
SOLID
Continuous Delivery
Refactoring
GoF
GRASP
emergent design
World of Warcraft
KISS
40
http://martinfowler.com/bliki/Yagni.html
4141
4242
4343
4444
Build out
services as
you need
them
45
agile
XP
TDD
BDD
YAGNI
DRY
SOLID
Continuous Delivery
Refactoring
GoF
GRASPemergent design
World of Warcraft
KISS
46
47
Fulfilment
Retail
48
Fulfilment Retail
49
Fulfilment Retail
50
Fulfilment Retail
51
Fulfilment Retail
High cohesion
Low coupling
52
(incidentally, if you were playing
the Conway’s law lottery, that’s
when you number came up)
53
agile
XP
TDD
BDD
YAGNI
DRY
SOLID
Continuous Delivery
Refactoring
GoF
GRASP
emergent design
World of Warcraft
KISS
5454
55
git clone https://github.com/boicy/service-template
(note this doesn’t exist)
56
57
DRY within services
duplication between
services
58
agile
XP
TDD
BDD
YAGNI
DRY
SOLID
Continuous Delivery
Refactoring
GoF
GRASP
emergent design
World of Warcraft
KISS
59
“The London school
of Test Driven
Development”
Mike Feathers
60
should we write unit tests?
61
Nat Pryce
Steve Freeman
Dan North
Sydney ‘Hoppalong’ Redelinghuys
Jim Webber
Ian Robinson
Ivan Moore
Liz Keogh
Simon St...
62
http://moleseyhill.com/blog/2009/08/27/dreyfus-model/
should we write unit tests?
63
personally I think it’s more
important than *ever*
64
agile
XP
TDD
BDD
YAGNI
DRY
Continuous Delivery
Refactoring
GoF
GRASP
emergent design
World of Warcraft
KISS
SOLID
65
a class should be no bigger than my head
6666
a:Class
6767
a:Class
a:Class
a:Class
a:Class
6868
6969
70
SRP
a service should
be no bigger than
my head
71
agile
XP
TDD
BDD
YAGNI
DRY
SOLID
Continuous Delivery
Refactoring
GoF
GRASP
emergent design
World of Warcraft
KISS
72
73
WWJD?
73
WWJD?
(what would Joe do?)
74
75
cron, python, boto, pydot, graphviz
75
cron, python, boto, pydot, graphviz
76
cron, python, boto, pydot, graphviz
Do the simplest
thing possible
77
but what about testing and deployment
78
78
78
SEMANTIC MONITORING
79
Customer
Service
Web Shop
79
Customer
Service
Web Shop
Small
Medium
Large
79
Customer
Service
Web Shop
Small
Medium
Large
79
Customer
Service
Web Shop
Small
Medium
Large
Consumer Driven Contracts
80
Customer
Service
Web Shop
80
Customer
Service
Web Shop
Expectations
80
Customer
Service
Web Shop
Expectations
80
Customer
Service
Web Shop
Expectations
Prod
80
Customer
Service
Web Shop
Expectations
Prod
81
81
https://github.com/realestate-com-au/pact
82
Prod
Prod
Prod
Prod
QA
Good Monitoring
Fast Remediation
TESTING IN PRODUCTION
83
CHANGING SERVICES INDEPENDENTLY
84
Thomas J. Allen, 1977
85
0 10 20 30 40 50 60 70 80 90 100
0
0.05
0.10
0.15
0.20
0.25
0.30
m
Probability of
weekly interaction
x
x x
x x
xxxx
xx
...
86
Low change rate
inter-company integration
High stability
Semantic Versioning
Contract Testing
Tolerant Reader
“Conversa...
87
higher change rate
inter-team integration
lower stability
Semantic Versioning
Contract Testing
Tolerant Reader
“Convers...
88
highest change rate
intra-team
lowest stability
Semantic Versioning
Contract Testing
Tolerant Reader
“Conversational ch...
89
integration environment
the death of the
90
production != live
91
the future is scary
we are learning how to:
Craft my families axe
Deploy microservices independently
Test microservices in isolation
Test micr...
93
the future is bright
94
we have old techniques that apply:
SRP
GRASP
YAGNI
KISS
TDD
DRY
and new techniques to apply:
Consumer Driven Contracts
Semantic Monitoring
Semantic Versioning
Testing in Production
96
96
software craftsmanship is around the code too
96
software craftsmanship is around the code too
chunk up and think about the “gaps”
96
software craftsmanship is around the code too
chunk up and think about the “gaps”
and
96
software craftsmanship is around the code too
chunk up and think about the “gaps”
do the simplest thing possible
and
97
Now…
98
Go forth and craft software
jalewis@thoughtworks.com
@boicy
98
Go forth and craft software
jalewis@thoughtworks.com
@boicy
Thanks!
Go forth and craft software
drink beer!
99
I, for one, welcome
our new overlords
Upcoming SlideShare
Loading in …5
×

James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconference 2015

1,219 views

Published on

James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconference 2015

Published in: Software
  • Be the first to comment

James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconference 2015

  1. 1. 1 never done building systems that are jalewis@thoughtworks.com @boicy
  2. 2. 2 agile XP TDD BDD YAGNI DRY SOLID Continuous Delivery Refactoring GoF GRASP emergent design World of Warcraft KISS
  3. 3. 3 the future is scary
  4. 4. 4 "ever accelerating progress of technology and changes in the mode of human life, which gives the appearance of approaching some essential singularity in the history of the race beyond which human affairs, as we know them, could not continue” John von Neumann, as recorded by Ulam, 1958
  5. 5. 5 “Around the world, laboring women produce forty-five thousand babies a day, representing 1023 MIPS of processing power. Also around the world, fab lines casually churn out thirty million microprocessors a day, representing 1023 MIPS. In another ten months, most of the MIPS being added to the solar system will be machine-hosted for the first time”
  6. 6. 6
  7. 7. 7 “Self-Driving Trucks Are Going to Hit Us Like a Human-Driven Truck” https://medium.com/basic-income/self-driving-trucks-are-going-to-hit-us-like-a-human-driven-truck-b8507d9c5961 source: Morgan Stanley This is where we’re at and this is what we face as we look towards a quickly approaching horizon of over 3 million unemployed truckers and millions more unemployed service industry workers in small towns all over the country dependent on truckers as consumers of their services.
  8. 8. “If you aren’t worried about strong AI within the next 5-10 years then you aren’t working closely enough with AI teams” (paraphrasing Elon Musk) 8
  9. 9. 9
  10. 10. 9
  11. 11. 10 closer to home?
  12. 12. 11
  13. 13. 12 Singularity
  14. 14. 12 Singularity JavaScript
  15. 15. 12 Singularity JavaScript Container
  16. 16. 12 Singularity JavaScript Log aggregation Container
  17. 17. 13 even closer to home
  18. 18. HOW WE DESIGN SOFTWARE IS CHANGING 14
  19. 19. 15
  20. 20. 16 “the first post-devops architectural style” Neal Ford
  21. 21. 17 replaceable component architectures Dan North
  22. 22. 18 never done
  23. 23. 19 never done Incomplete adjective not having all the necessary or appropriate parts
  24. 24. 19 never done Incomplete adjective not having all the necessary or appropriate parts
  25. 25. 20 never done
  26. 26. 20 “This, milord, is my family's axe. We have owned it for almost nine hundred years, see. Of course, sometimes it needed a new blade. And sometimes it has required a new handle, new designs on the metalwork, a little refreshing of the ornamentation . . . but is this not the nine hundred-year-old axe of my family? And because it has changed gently over time, it is still a pretty good axe, y'know. Pretty good.” never done
  27. 27. 21 microservices should be: cheap to replace and should allow us to go as “fast as possible”? quick to scale able to withstand failure
  28. 28. 22 Hardest things to do:
  29. 29. 22 Hardest things to do: End-to-end testing
  30. 30. 22 Hardest things to do: End-to-end testing Independent deployment
  31. 31. 22 Hardest things to do: End-to-end testing Independent deployment Service versioning / evolution
  32. 32. TESTING MICROSERVICES IS HARD 23 Service A Service Large Medium Small
  33. 33. TESTING MICROSERVICES IS HARD 23 Service A Service Large Medium Small
  34. 34. Service Stub TESTING MICROSERVICES IS HARD 23 Service A Large Medium Small
  35. 35. INTEGRATING MICROSERVICES IS HARD 24
  36. 36. INTEGRATING MICROSERVICES IS HARD 24 Integration Test
  37. 37. INTEGRATING MICROSERVICES IS HARD 24 Integration Test Prod…
  38. 38. INTEGRATING MICROSERVICES IS HARD 24 Integration Test Prod…
  39. 39. INTEGRATING MICROSERVICES IS HARD 24 Integration Test Prod…
  40. 40. INTEGRATING MICROSERVICES IS HARD 24 Integration Test Prod…
  41. 41. 25
  42. 42. 26 WHAT DOES THIS MEAN FOR THE CRAFT OF SOFTWARE DEVELOPMENT?
  43. 43. 27 <thinks>
  44. 44. 28
  45. 45. 29 well crafted software steadily adding value
  46. 46. 30
  47. 47. 31 Nat Pryce Steve Freeman Dan North Sydney ‘Hoppalong’ Redelinghuys Jim Webber Ian Robinson Ivan Moore Liz Keogh Simon Stewart Jez Humble Dave Farley Jay Fields Dan Worthington-Bodart Joe Walnes
  48. 48. 31 Nat Pryce Steve Freeman Dan North Sydney ‘Hoppalong’ Redelinghuys Jim Webber Ian Robinson Ivan Moore Liz Keogh Simon Stewart Jez Humble Dave Farley Jay Fields Dan Worthington-Bodart Joe Walnes APPEAL TO AUTHORITY WARNING!
  49. 49. 32 TW is an XP shop
  50. 50. 33 agile XP TDD BDD YAGNI DRY SOLID Continuous Delivery Refactoring GoF GRASP emergent design World of Warcraft KISS
  51. 51. 34 does this still make sense?
  52. 52. 35
  53. 53. 35 Gemini Project, Rogallo wing Source: wikipedia.org
  54. 54. 36 <thinks>
  55. 55. 37 Gemini Project, Rogallo wing Source: wikipedia.org it’s turtles all the way down
  56. 56. 38 agile XP TDD BDD YAGNI DRY SOLID Continuous Delivery Refactoring GoF GRASP emergent design World of Warcraft KISS
  57. 57. 39 agile XP TDD BDD YAGNI DRY SOLID Continuous Delivery Refactoring GoF GRASP emergent design World of Warcraft KISS
  58. 58. 40 http://martinfowler.com/bliki/Yagni.html
  59. 59. 4141
  60. 60. 4242
  61. 61. 4343
  62. 62. 4444 Build out services as you need them
  63. 63. 45 agile XP TDD BDD YAGNI DRY SOLID Continuous Delivery Refactoring GoF GRASPemergent design World of Warcraft KISS
  64. 64. 46
  65. 65. 47 Fulfilment Retail
  66. 66. 48 Fulfilment Retail
  67. 67. 49 Fulfilment Retail
  68. 68. 50 Fulfilment Retail
  69. 69. 51 Fulfilment Retail High cohesion Low coupling
  70. 70. 52 (incidentally, if you were playing the Conway’s law lottery, that’s when you number came up)
  71. 71. 53 agile XP TDD BDD YAGNI DRY SOLID Continuous Delivery Refactoring GoF GRASP emergent design World of Warcraft KISS
  72. 72. 5454
  73. 73. 55 git clone https://github.com/boicy/service-template (note this doesn’t exist)
  74. 74. 56
  75. 75. 57 DRY within services duplication between services
  76. 76. 58 agile XP TDD BDD YAGNI DRY SOLID Continuous Delivery Refactoring GoF GRASP emergent design World of Warcraft KISS
  77. 77. 59 “The London school of Test Driven Development” Mike Feathers
  78. 78. 60 should we write unit tests?
  79. 79. 61 Nat Pryce Steve Freeman Dan North Sydney ‘Hoppalong’ Redelinghuys Jim Webber Ian Robinson Ivan Moore Liz Keogh Simon Stewart Jez Humble Dave Farley Jay Fields Dan Worthington-Bodart Joe Walnes
  80. 80. 62 http://moleseyhill.com/blog/2009/08/27/dreyfus-model/
  81. 81. should we write unit tests? 63 personally I think it’s more important than *ever*
  82. 82. 64 agile XP TDD BDD YAGNI DRY Continuous Delivery Refactoring GoF GRASP emergent design World of Warcraft KISS SOLID
  83. 83. 65 a class should be no bigger than my head
  84. 84. 6666 a:Class
  85. 85. 6767 a:Class a:Class a:Class a:Class
  86. 86. 6868
  87. 87. 6969
  88. 88. 70 SRP a service should be no bigger than my head
  89. 89. 71 agile XP TDD BDD YAGNI DRY SOLID Continuous Delivery Refactoring GoF GRASP emergent design World of Warcraft KISS
  90. 90. 72
  91. 91. 73 WWJD?
  92. 92. 73 WWJD? (what would Joe do?)
  93. 93. 74
  94. 94. 75 cron, python, boto, pydot, graphviz
  95. 95. 75 cron, python, boto, pydot, graphviz
  96. 96. 76 cron, python, boto, pydot, graphviz Do the simplest thing possible
  97. 97. 77 but what about testing and deployment
  98. 98. 78
  99. 99. 78
  100. 100. 78 SEMANTIC MONITORING
  101. 101. 79 Customer Service Web Shop
  102. 102. 79 Customer Service Web Shop Small Medium Large
  103. 103. 79 Customer Service Web Shop Small Medium Large
  104. 104. 79 Customer Service Web Shop Small Medium Large Consumer Driven Contracts
  105. 105. 80 Customer Service Web Shop
  106. 106. 80 Customer Service Web Shop Expectations
  107. 107. 80 Customer Service Web Shop Expectations
  108. 108. 80 Customer Service Web Shop Expectations Prod
  109. 109. 80 Customer Service Web Shop Expectations Prod
  110. 110. 81
  111. 111. 81 https://github.com/realestate-com-au/pact
  112. 112. 82 Prod Prod Prod Prod QA Good Monitoring Fast Remediation TESTING IN PRODUCTION
  113. 113. 83 CHANGING SERVICES INDEPENDENTLY
  114. 114. 84 Thomas J. Allen, 1977
  115. 115. 85 0 10 20 30 40 50 60 70 80 90 100 0 0.05 0.10 0.15 0.20 0.25 0.30 m Probability of weekly interaction x x x x x xxxx xx xx x x x x x x x x The effect of distance on communication
  116. 116. 86 Low change rate inter-company integration High stability Semantic Versioning Contract Testing Tolerant Reader “Conversational change”
  117. 117. 87 higher change rate inter-team integration lower stability Semantic Versioning Contract Testing Tolerant Reader “Conversational change”
  118. 118. 88 highest change rate intra-team lowest stability Semantic Versioning Contract Testing Tolerant Reader “Conversational change”
  119. 119. 89 integration environment the death of the
  120. 120. 90 production != live
  121. 121. 91 the future is scary
  122. 122. we are learning how to: Craft my families axe Deploy microservices independently Test microservices in isolation Test microservices in production
  123. 123. 93 the future is bright
  124. 124. 94 we have old techniques that apply: SRP GRASP YAGNI KISS TDD DRY
  125. 125. and new techniques to apply: Consumer Driven Contracts Semantic Monitoring Semantic Versioning Testing in Production
  126. 126. 96
  127. 127. 96 software craftsmanship is around the code too
  128. 128. 96 software craftsmanship is around the code too chunk up and think about the “gaps”
  129. 129. 96 software craftsmanship is around the code too chunk up and think about the “gaps” and
  130. 130. 96 software craftsmanship is around the code too chunk up and think about the “gaps” do the simplest thing possible and
  131. 131. 97 Now…
  132. 132. 98 Go forth and craft software jalewis@thoughtworks.com @boicy
  133. 133. 98 Go forth and craft software jalewis@thoughtworks.com @boicy Thanks! Go forth and craft software drink beer!
  134. 134. 99 I, for one, welcome our new overlords

×