building systems that are never done - GOTO...

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

Transcript of building systems that are never done - GOTO...

Page 1: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

1

never donebuilding systems that are

[email protected]

@boicy

Page 2: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

2

never done

Page 3: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

3

never done

Incomplete

adjective not having all the necessary or appropriate parts

Page 4: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

3

never done

Incomplete

adjective not having all the necessary or appropriate parts

Page 5: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

4

never done

Page 6: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

4

“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

Page 7: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

5

microservices should be:

cheap to replace

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

quick to scale

able to withstand failure

Page 8: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

6

“the first post-devops architectural style”Neal Ford

Page 9: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

7

replaceable component architecturesDan North

Page 10: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

8

the future is scary

Page 11: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

9

"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

Page 12: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

10

Page 13: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

11

Singularity

Page 14: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

11

SingularityJavaScript

Page 15: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

11

SingularityJavaScript

Container

Page 16: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

11

SingularityJavaScriptLog aggregation

Container

Page 17: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

12

even closer to home

Page 18: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

HOW WE DESIGN SOFTWARE IS CHANGING

13

Page 19: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

14

Page 20: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

15

Hardest things to do:

Page 21: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

15

Hardest things to do: End-to-end testing

Page 22: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

15

Hardest things to do: End-to-end testing

Independent deployment

Page 23: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

15

Hardest things to do: End-to-end testing

Independent deployment

Service versioning / evolution

Page 24: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

TESTING MICROSERVICES IS HARD

16

Service A

Service

Large

Medium

Small

Page 25: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

TESTING MICROSERVICES IS HARD

16

Service A

Service

Large

Medium

Small

Page 26: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

Service Stub

TESTING MICROSERVICES IS HARD

16

Service A

Large

Medium

Small

Page 27: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

INTEGRATING MICROSERVICES IS HARD

17

Page 28: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

INTEGRATING MICROSERVICES IS HARD

17

Integration Test

Page 29: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

INTEGRATING MICROSERVICES IS HARD

17

Integration Test Prod…

Page 30: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

INTEGRATING MICROSERVICES IS HARD

17

Integration Test Prod…

Page 31: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

INTEGRATING MICROSERVICES IS HARD

17

Integration Test Prod…

Page 32: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

INTEGRATING MICROSERVICES IS HARD

17

Integration Test Prod…

Page 33: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

18

<thinks>

Page 34: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

19

agile

XPTDD

BDD

YAGNI

DRY

SOLID

Continuous Delivery

Refactoring

GoF

GRASP

emergent design

World of Warcraft

KISS

Page 35: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

20

Page 36: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

20

Gemini Project, Rogallo wing

Source: wikipedia.org

Page 37: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

21

<thinks>

Page 38: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

22

Gemini Project, Rogallo wing

Source: wikipedia.org

it’s turtles all the way down

Page 39: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

23

agile

XPTDD

BDD

YAGNI

DRY

SOLID

Continuous Delivery

Refactoring

GoF

GRASP

emergent design

World of Warcraft

KISS

Page 40: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

24

agile

XPTDD

BDDYAGNIDRY

SOLID

Continuous Delivery

Refactoring

GoF

GRASP

emergent design

World of Warcraft

KISS

Page 41: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

25

http://martinfowler.com/bliki/Yagni.html

Page 42: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

2626

Page 43: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

2727

Page 44: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

2828

Page 45: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

2929

Build out services as you need

them

Page 46: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

30

agile

XPTDD

BDD

YAGNI

DRY

SOLID

Continuous Delivery

Refactoring

GoFGRASPemergent design

World of Warcraft

KISS

Page 47: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

31

Page 48: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

32

Fulfilment

Retail

Page 49: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

33

Fulfilment Retail

Page 50: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

34

Fulfilment Retail

Page 51: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

35

Fulfilment Retail

Page 52: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

36

Fulfilment Retail

High cohesion

Low coupling

Page 53: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

37

(incidentally, if you were playing the Conway’s law lottery, that’s

when you number came up)

Page 54: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

38

agile

XPTDD

BDD

YAGNI

DRYSOLID

Continuous Delivery

Refactoring

GoF

GRASP

emergent design

World of Warcraft

KISS

Page 55: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

39

“Every piece of knowledge must have a single, unambiguous, authoritative

representation within a system”

Dave Thomas, interviewed by Bill Venners (2003-10-10). "Orthogonality and the DRY Principle". Retrieved 2006-12-01.

Page 56: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

4040

shared binary dependencies

∆ dep ⇒ ∆S1 + ∆S2 + … + ∆Sn

Page 57: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

41

git clone https://github.com/boicy/service-template

(note this doesn’t exist)

Page 58: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

42

Page 59: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

43

DRY within services

duplication between services

Page 60: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

44

agile

XP

TDDBDD

YAGNI

DRY

SOLID

Continuous Delivery

Refactoring

GoF

GRASP

emergent design

World of Warcraft

KISS

Page 61: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

45

Page 62: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

45

Small

Medium

Large

Page 63: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

46

“The London school of Test Driven Development”

Mike Feathers

Page 64: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

47

should we write unit tests?

Page 65: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

48

should bother with test driving our code if we are going to throw it away?

Page 66: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

49

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

Page 67: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

50

http://moleseyhill.com/blog/2009/08/27/dreyfus-model/

Page 68: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

should we write unit tests?

51

personally I think it’s more important than *ever*

Page 69: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

52

agile

XPTDD

BDD

YAGNI

DRY

Continuous Delivery

Refactoring

GoF

GRASP

emergent design

World of Warcraft

KISS

SRP

Page 70: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

53

a class should be no bigger than my head

Page 71: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

5454

a:Class

Page 72: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

5555

a:Class

a:Class

a:Class

a:Class

Page 73: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

5656

Page 74: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

5757

Page 75: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

58

SRP

a service should be no bigger than

my head

Page 76: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

59

agile

XPTDD

BDD

YAGNI

DRY

SOLID

Continuous Delivery

Refactoring

GoF

GRASP

emergent design

World of Warcraft

KISS

Page 77: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

60

Page 78: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

61

WWJD?

Page 79: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

61

WWJD?(what would Joe do?)

Page 80: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

62

Page 81: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

63

cron, python, boto, pydot, graphviz

Page 82: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

63

cron, python, boto, pydot, graphviz

Page 83: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

64

cron, python, boto, pydot, graphviz

Do the simplest thing possible

Page 84: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

65

integration and deployment

Page 85: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

66

Page 86: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

66

Page 87: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

66

SEMANTIC MONITORING

Page 88: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

67

service bservice a

Page 89: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

67

service bservice a

Small

Medium

Large

Page 90: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

67

service bservice a

Small

Medium

Large

Page 91: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

67

service bservice a

Small

Medium

LargeConsumer Driven Contracts

Page 92: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

68

Customer ServiceWeb Shop

Page 93: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

68

Customer ServiceWeb Shop

Expectations

Page 94: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

68

Customer ServiceWeb Shop

Expectations

Page 95: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

68

Customer ServiceWeb Shop

Expectations

Prod

Page 96: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

68

Customer ServiceWeb Shop

Expectations

Prod

Page 97: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

69

Page 98: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

69

https://github.com/realestate-com-au/pact

Page 99: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

70

Prod

Prod

Prod

Prod

QA

Good Monitoring

Fast Remediation

TESTING IN PRODUCTION

Page 100: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

71

integration environment

the death of the

Page 101: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

72

production != live

Page 102: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

73

CHANGING SERVICES INDEPENDENTLY

Page 103: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

74

CHANGING SERVICES INDEPENDENTLY

What is the blast radius of the change?

Page 104: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

74

CHANGING SERVICES INDEPENDENTLY

What is the blast radius of the change?

Limited to your team?

Page 105: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

74

CHANGING SERVICES INDEPENDENTLY

What is the blast radius of the change?

business capability?Limited to your team?

Page 106: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

74

CHANGING SERVICES INDEPENDENTLY

What is the blast radius of the change?

business capability?organisation?

Limited to your team?

Page 107: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

75Thomas J. Allen, 1977

Page 108: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

76

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

Page 109: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

77

Low change rate

inter-company integration

High stability

Semantic Versioning

Contract Testing

Tolerant Reader

“Conversational change”

Page 110: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

78

higher change rate

inter-team integration

lower stability

Semantic Versioning

Contract Testing

Tolerant Reader

“Conversational change”

Page 111: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

79

highest change rate

intra-team

lowest stability

Semantic Versioning

Contract Testing

Tolerant Reader

“Conversational change”

Page 112: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

80

the future is scary

Page 113: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

we are learning how to:

Craft my families axe

Deploy small services independently

Test microservices in isolation Test microservices in production

Page 114: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

82

the future is bright

Page 115: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

83

we have old techniques that apply:

SRP GRASP YAGNI KISS TDD DRY

Page 116: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

and new techniques to apply:

Consumer Driven Contracts Semantic Monitoring Semantic Versioning Testing in Production Failure Isolation

Page 117: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

85

Page 118: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

85

do the simplest thing possible

Page 119: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

86

[email protected]

@boicy

Page 120: building systems that are never done - GOTO Conferencegotocon.com/dl/goto-amsterdam-2015/slides/JamesLewis_BuildingS… · Test microservices in isolation Test microservices in production.

86

[email protected]

@boicy

Thanks!