building systems that are never done - goto...

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

Upload: others

Post on 31-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

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!