james lewis: microservices - systems that are #neverdone at i t.a.k.e. unconference 2015

134
1 never done building systems that are [email protected] @boicy

Upload: mozaic-works

Post on 12-Aug-2015

114 views

Category:

Software


1 download

TRANSCRIPT

1

never donebuilding systems that are

[email protected]

@boicy

2

agile

XPTDD

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 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

“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

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.

“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

10

closer to home?

11

12

Singularity

12

SingularityJavaScript

12

SingularityJavaScript

Container

12

SingularityJavaScriptLog 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 architecturesDan 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 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

21

microservices should be:

cheap to replace

and should allow us to go as “fast as possible”?

quick to scale

able to withstand failure

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 Stewart Jez Humble Dave Farley Jay Fields Dan Worthington-Bodart Joe Walnes

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!

32

TW is an XP shop

33

agile

XPTDD

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

XPTDD

BDD

YAGNI

DRY

SOLID

Continuous Delivery

Refactoring

GoF

GRASP

emergent design

World of Warcraft

KISS

39

agile

XPTDD

BDDYAGNIDRY

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

XPTDD

BDD

YAGNI

DRY

SOLID

Continuous Delivery

Refactoring

GoFGRASPemergent 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

XPTDD

BDD

YAGNI

DRYSOLID

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

TDDBDD

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 Stewart Jez Humble Dave Farley Jay Fields Dan Worthington-Bodart Joe Walnes

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

XPTDD

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

XPTDD

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 ServiceWeb Shop

79

Customer ServiceWeb Shop

Small

Medium

Large

79

Customer ServiceWeb Shop

Small

Medium

Large

79

Customer ServiceWeb Shop

Small

Medium

LargeConsumer Driven Contracts

80

Customer ServiceWeb Shop

80

Customer ServiceWeb Shop

Expectations

80

Customer ServiceWeb Shop

Expectations

80

Customer ServiceWeb Shop

Expectations

Prod

80

Customer ServiceWeb 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

84Thomas J. Allen, 1977

85

0 10 20 30 40 50 60 70 80 90 1000

0.05

0.10

0.15

0.20

0.25

0.30

m

Probability of weekly interaction

x

x x

x xxxxxxxxx

x

x xx

x xx x

The effect of distance on communication

86

Low change rate

inter-company integration

High stability

Semantic Versioning

Contract Testing

Tolerant Reader

“Conversational change”

87

higher change rate

inter-team integration

lower stability

Semantic Versioning

Contract Testing

Tolerant Reader

“Conversational change”

88

highest change rate

intra-team

lowest stability

Semantic Versioning

Contract Testing

Tolerant Reader

“Conversational change”

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 microservices in production

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

[email protected]

@boicy

98

Go forth and craft software

[email protected]

@boicy

Thanks!Go forth and craft software

drink beer!

99

I, for one, welcome our new overlords