212
Testing & Deploying Microservices Sam Newman

Testing & deploying Microservices GeeCon 2014

Embed Size (px)

DESCRIPTION

What do deployment pipelines look like when your system consists of 10s of different types of services? How do you know what to test before deployment? Should you release a service at a time, or bunch them up? This talk goes into the nitty gritty of managing build,test and release of micro services and also covers the often ignored tradeoff between testing before deployment, and testing afterwards. Presented at GeeCon 2014

Citation preview

Page 1: Testing & deploying Microservices   GeeCon 2014

Testing & Deploying Microservices

Sam Newman

Page 2: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon2

Page 3: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon3

http://www.thoughtworks.com/radar/

Page 4: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon4

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

Page 5: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon5

Page 6: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon5

Web Shop

Shopping Cart

Catalog

Registration

Customer

Finance

Page 7: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon5

Web Shop

Shopping Cart

Catalog

Registration

Customer

Finance

1000 lines of code or less

Page 8: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon6

Page 9: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon6

Page 10: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon7

V1

Page 11: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon7

V2

Page 12: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon8

Go

Java

NodeJS

Ruby

Page 13: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon8

Go

NodeJS

Ruby

Clojure!

Page 14: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon9

Page 15: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon9

Page 16: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon10

Accounts

Returns

Invoicing

Shipping

Inventory

Customer Service

Page 17: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon10

Accounts

Returns

Invoicing

Shipping

Inventory

Customer Service

Page 18: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon11

Page 19: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon11

Page 20: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon11

DB

Page 21: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon12

Unit

Service

UI

MIKE COHN’S TEST PYRAMID

Page 22: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon12

Unit

Service

UI

MIKE COHN’S TEST PYRAMID

Increasing Scope

More Confidence

Page 23: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon12

Unit

Service

UI

MIKE COHN’S TEST PYRAMID

Increasing Scope

More Confidence

Faster!

Better Isolation

Page 24: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon12

Unit

Service

UI

MIKE COHN’S TEST PYRAMID

???

???

Increasing Scope

More Confidence

Faster!

Better Isolation

???

Page 25: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon13

Small

Medium

Large

GOOGLE’S TEST PYRAMID

Increasing Scope

More Confidence

Faster!

Better Isolation

Page 26: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon14

DB

Small

Large

Medium

Page 27: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon14

DB

Small

Large

Medium

Page 28: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon15

DB

Small

Large

Medium

Page 29: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon15

DB

Small

Large

Medium

Page 30: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon16

DB

Small

Large

Medium

Page 31: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon16

DB

Small

Large

Medium

Page 32: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon16

DB

Small

Large

Medium

Page 33: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon1717

Small

Medium

Large

TEST SNOWCONE

Page 34: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon18

Small

Medium

Large

Page 35: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon19

SmallMedium

LargeBuild

TestsTests

Source Control

BUILD PIPELINE

Page 36: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon19

SmallMedium

LargeBuild

TestsTests

Source Control

Faster Feedback

BUILD PIPELINE

Page 37: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon19

SmallMedium

LargeBuild

TestsTests

Source Control

Faster Feedback

Binary Artifact(s)

BUILD PIPELINE

Page 38: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon19

SmallMedium

LargeBuild

TestsTests

Source Control

Faster Feedback

Binary Artifact(s)

BUILD PIPELINE

Page 39: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon20

DB

Page 40: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon20

DB

Page 41: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon21

S/M TestsBuild Large Tests UAT Prod

Page 42: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon21

S/M TestsBuild Large Tests UAT Prod

DB

Machine CI Node

Large Tests Environment

Large Tests

Page 43: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon22

S/M TestsBuild Large Tests UAT Prod

DB

Machine

UAT Environment

Machine

Page 44: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon23

S/M TestsBuild Large Tests UAT Prod

Master DB

Machine

Production Environment

Machine Machine Machine

Slave DB

Page 45: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon24

S/M TestsBuild Large Tests UAT Prod

More Production Like

Page 46: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon24

S/M TestsBuild Large Tests UAT ProdLarge Tests

More Production Like

Page 47: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon24

S/M TestsBuild Large Tests UAT ProdLarge Tests

Faster Feedback

More Production Like

Page 48: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon25

Page 49: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon26

Customer Service

Page 50: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon26

Customer Service

S/M TestsBuild Large Tests

Page 51: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon26

Customer Service

S/M TestsBuild Large Tests

Page 52: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon26

Customer Service

S/M TestsBuild Large Tests

Page 53: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon27

Customer Service

Web Shop

Fulfilment Service

Page 54: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon27

Customer Service

Web Shop

Fulfilment Service

Large

Medium

Small

Page 55: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon28

Customer Service

Fulfilment Service

Large

Medium

Small

Page 56: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon28

Customer Service

Fulfilment Service

Large

Medium

Small

Page 57: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon28

Customer Service

Large

Medium

Small

Fulfilment Service

Stub

Page 58: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon29

Mountebank http://www.mbtest.org

Page 59: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon30

mountebank

:2525

Page 60: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon30

mountebank

:2525

Page 61: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon30

mountebank

:2525

:5555

Page 62: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon30

mountebank

:2525

:5555

Customer Service

Page 63: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon31

S/M TestsBuild Large Tests

Page 64: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon31

S/M TestsBuild Large Tests

Customer Service

Fulfilment Service

Stub

Page 65: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon32

Customer Service

V1

Web Shop

Fulfilment Service

Page 66: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon32

Web Shop

Customer Service

v2

Fulfilment Service

Page 67: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon32

Web Shop

Customer Service

v2

Fulfilment Service

Page 68: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon32

Web Shop

Customer Service

v2

Fulfilment Service

Page 69: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon33

S/M TestsBuild Large TestsCustomer

Service

Customer Service

v1

Web Shop v1

Production

Page 70: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon33

S/M TestsBuild Large Tests Integration TestCustomer

Service

Customer Service

v1

Web Shop v1

Production

Page 71: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon33

S/M TestsBuild Large Tests Integration TestCustomer

Service

Customer Service

v1

Web Shop v1

Production

Customer Service

v2

Web Shop v1

Integration Test

Page 72: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon34

Customer Service

v1

Web Shop v1

Production

Page 73: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon34

Customer Service

v1

Web Shop v1

Production

S/M TestsBuild Large Tests Integration TestCustomer

Service

Customer Service

v2

Page 74: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon34

S/M TestsBuild Large TestsWeb Shop

Customer Service

v1

Web Shop v1

Production

S/M TestsBuild Large Tests Integration TestCustomer

Service

Customer Service

v2

Page 75: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon34

S/M TestsBuild Large TestsWeb Shop

Customer Service

v1

Web Shop v1

Production

S/M TestsBuild Large Tests Integration TestCustomer

Service

Customer Service

v2

Web Shop v2

Page 76: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon34

S/M TestsBuild Large TestsWeb Shop

Customer Service

v1

Web Shop v1

Production

S/M TestsBuild Large Tests Integration TestCustomer

Service

Customer Service

v2

Web Shop v2

???

Page 77: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon35

S/M TestsBuild Large TestsWeb Shop

S/M TestsBuild Large TestsCustomer

Service

Page 78: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon35

S/M TestsBuild Large TestsWeb Shop

S/M TestsBuild Large TestsCustomer

Service

Integration Test

Page 79: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon35

S/M TestsBuild Large TestsWeb Shop

S/M TestsBuild Large TestsCustomer

Service

Integration Test

S/M TestsBuild Large TestsInvoice Service

Page 80: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon35

S/M TestsBuild Large TestsWeb Shop

S/M TestsBuild Large TestsCustomer

Service

Integration Test

S/M TestsBuild Large TestsInvoice Service

S/M TestsBuild Large TestsBasket

Page 81: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon35

S/M TestsBuild Large TestsWeb Shop

S/M TestsBuild Large TestsCustomer

Service

Integration Test

S/M TestsBuild Large TestsInvoice Service

S/M TestsBuild Large TestsBasket

S/M TestsBuild Large TestsFulfilment

Page 82: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon36

Page 83: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon36

Browsers

Page 84: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon36

Timing

Browsers

Page 85: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon36

Provisioning of Environments

Timing

Browsers

Page 86: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon36

Provisioning of Environments

Networks

Timing

Browsers

Page 87: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon36

Deployment

Provisioning of Environments

Networks

Timing

Browsers

Page 88: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon36

Deployment

Provisioning of Environments

Networks

Timing

Browsers Diagnosis

Page 89: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon37

Page 90: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon37

Integration Test

Page 91: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon37

Integration Test Prod…

Page 92: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon37

Integration Test Prod…

Page 93: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon37

Integration Test Prod…

Page 94: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon37

Integration Test Prod…

Page 95: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon38

Page 96: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon38

Page 97: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon39

John Allspaw: “Ops Metametrics” http://slidesha.re/dsSZIr

Page 98: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon39

John Allspaw: “Ops Metametrics” http://slidesha.re/dsSZIr

Page 99: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon40

Integration Test Prod…

v1v2

v6v4 = v10

Page 100: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon40

Integration Test Prod…

v1v2

v6v4 = v10

Page 101: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon41

Danger Will Robinson!

Page 102: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon42

Show Tangle

Page 103: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon43

Golden Rule: Get good at releasing services independently

Page 104: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon44

SO NO INTEGRATION TESTS?

Page 105: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon45

Page 106: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon45

Page 107: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon45

SEMANTIC MONITORING

Page 108: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon46

Customer ServiceWeb Shop

Page 109: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon46

Customer ServiceWeb Shop

Small

Medium

Large

Page 110: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon46

Customer ServiceWeb Shop

Small

Medium

Large

Page 111: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon46

Customer ServiceWeb Shop

Small

Medium

LargeConsumer Driven Contracts

Page 112: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon47

Customer ServiceWeb Shop

Page 113: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon47

Customer ServiceWeb Shop

Expectations

Page 114: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon47

Customer ServiceWeb Shop

Expectations

Page 115: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon47

Customer ServiceWeb Shop

Expectations

Prod

Page 116: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon47

Customer ServiceWeb Shop

Expectations

Prod

Page 117: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon48

Page 118: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon48

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

Page 119: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon49

Prod

Prod

Prod

Prod

Page 120: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon49

Prod

Prod

Prod

Prod

Page 121: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon49

Prod

Prod

Prod

Prod

QA

Page 122: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon49

Prod

Prod

Prod

Prod

QA

Good Monitoring

Page 123: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon49

Prod

Prod

Prod

Prod

QA

Good Monitoring

Fast Remediation

Page 124: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon49

Prod

Prod

Prod

Prod

QA

Good Monitoring

Fast Remediation

Page 125: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon50

S/M TestsBuild Large Tests UAT ProdLarge Tests

Faster Feedback

More Production Like

Page 126: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon50

S/M TestsBuild Large Tests UAT ProdLarge Tests

Faster Feedback

More Production Like

Page 127: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon50

S/M TestsBuild Large Tests UAT ProdLarge Tests

Faster Feedback

More Production Like

Page 128: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon51

DB

Machine CI Node

Large Tests Environment

S/M TestsBuild Large Tests UAT ProdLarge TestsLarge Tests

Page 129: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon51

DB

Machine CI Node

Large Tests Environment

DB

Machine

UAT Environment

Machine

S/M TestsBuild Large Tests UAT ProdLarge Tests UAT

Page 130: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon51

DB

Machine CI Node

Large Tests Environment

DB

Machine

UAT Environment

Machine

Master DB

Machine

Production Environment

Machine Machine Machine

Slave DB

S/M TestsBuild Large Tests UAT ProdLarge Tests Prod

Page 131: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon52

Faster Feedback

More Production Like

S/M TestsBuild Large Tests UAT ProdLarge Tests

Page 132: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon52

Faster Feedback

More Production Like

S/M TestsBuild Large Tests UAT ProdLarge Tests

Page 133: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon53

Page 134: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon54

Page 135: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon55

Ansible

Puppet

Chef

Page 136: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon55

Ansible

Puppet

Chef

Page 137: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon55

Ansible

Puppet

Chef

AWS

Page 138: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon55

Ansible

Puppet

Chef

AWS

Digital Ocean

Page 139: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon55

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

Page 140: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon55

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Page 141: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon55

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Vagrant

Page 142: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon55

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Vagrant

Immutable Servers

Page 143: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon55

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Vagrant

Immutable Servers

Fast Spin-up

Page 144: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon55

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Vagrant

Immutable Servers

Fast Spin-up

Provider Agnostic

Page 145: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon55

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Vagrant

Immutable Servers

Fast Spin-up

Provider Agnostic

Feedback Can Suffer

Page 146: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon55

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Vagrant

Immutable Servers

Fast Spin-up

Provider Agnostic

Feedback Can Suffer

Cycle Time

Page 147: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon56

Prod

Prod

Prod

Prod

Page 148: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon56

Prod

Prod

Prod

Prod

Packer Images

Page 149: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon56

Prod

Prod

Prod

Prod

“Machine”

Service

Packer Images

Page 150: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon56

Prod

Prod

Prod

Prod

“Machine”

Service

“Machine”

Service Service

Packer Images

Page 151: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon56

Prod

Prod

Prod

Prod

“Machine”

Service

“Machine”

Service Service

Packer Images

Page 152: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon57

S/M TestsBuild Large Tests UAT ProdLarge Tests

Page 153: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon57

S/M TestsBuild Large Tests UAT ProdLarge Tests

AWS

Page 154: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon57

S/M TestsBuild Large Tests UAT ProdLarge Tests

AWS

VMWare

Page 155: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon57

S/M TestsBuild Large Tests UAT ProdLarge Tests

AWS

VMWare

Vagrant

Page 156: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon57

S/M TestsBuild Large Tests UAT ProdLarge Tests

AWS

VMWare

Vagrant

Page 157: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon57

S/M TestsBuild Large Tests UAT ProdLarge Tests

AWS

VMWare

Vagrant

Page 158: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon57

S/M TestsBuild Large Tests UAT ProdLarge Tests

AWS VMWareVagrant

Page 159: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon58

“Machine”

Service

Page 160: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon58

“Machine”

Service

Much Easier To Reason About

Page 161: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon58

“Machine”

Service

Much Easier To Reason About

Easier To Provision (Or Decommission)

Page 162: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon58

“Machine”

Service

Much Easier To Reason About

Easier To Provision (Or Decommission)

Fewer Side-effects

Page 163: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon58

“Machine”

Service

Much Easier To Reason About

Easier To Provision (Or Decommission)

Fewer Side-effects

Cost & Management Overhead!

Page 164: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon58

“Machine”

Service

Much Easier To Reason About

Easier To Provision (Or Decommission)

Fewer Side-effects

Cost & Management Overhead!

AWS

Digital Ocean

OpenStack

Page 165: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon58

“Machine”

Service

Much Easier To Reason About

Easier To Provision (Or Decommission)

Fewer Side-effects

Cost & Management Overhead!

AWS

Digital Ocean

OpenStack

Page 166: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon59

STANDARD VIRTUALISATION

Page 167: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon59

Machine

STANDARD VIRTUALISATION

Page 168: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon59

Machine

Base OS

STANDARD VIRTUALISATION

Page 169: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon59

Machine

Base OS

Hypervisor

STANDARD VIRTUALISATION

Page 170: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon59

Machine

Base OS

Hypervisor

VM

STANDARD VIRTUALISATION

Page 171: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon59

Machine

Base OS

Hypervisor

VM

OS

STANDARD VIRTUALISATION

Page 172: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon59

Machine

Base OS

Hypervisor

VM

OS

Apps

STANDARD VIRTUALISATION

Page 173: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon59

Machine

Base OS

Hypervisor

VM

OS

AppsPacker Image

STANDARD VIRTUALISATION

Page 174: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon59

Machine

Base OS

Hypervisor

VM

OS

Apps

VM

OS

AppsPacker Image

STANDARD VIRTUALISATION

Page 175: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon59

Machine

Base OS

Hypervisor

VM

OS

Apps

VM

OS

Apps

VM

OS

AppsPacker Image

STANDARD VIRTUALISATION

Page 176: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon60

Page 177: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon61

CONTAINER VIRTUALISATION

Page 178: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon61

Machine

CONTAINER VIRTUALISATION

Page 179: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon61

Machine

Base OS

CONTAINER VIRTUALISATION

Page 180: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon61

Machine

Base OS

Container

CONTAINER VIRTUALISATION

Page 181: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon61

Machine

Base OS

Container

OS

CONTAINER VIRTUALISATION

Page 182: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon61

Machine

Base OS

Container

OS

Apps

CONTAINER VIRTUALISATION

Page 183: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon61

Machine

Base OS

Container

OS

Apps

Container

OS

Apps

CONTAINER VIRTUALISATION

Page 184: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon61

Machine

Base OS

Container

OS

Apps

Container

OS

Apps

Container

OS

Apps

CONTAINER VIRTUALISATION

Page 185: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon61

Machine

Base OS

Container

OS

Apps

Container

OS

Apps

Container

OS

Apps

CONTAINER VIRTUALISATION

Linux Only

Page 186: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon61

Machine

Base OS

Container

OS

Apps

Container

OS

Apps

Container

OS

Apps

CONTAINER VIRTUALISATION

Same Kernel

Linux Only

Page 187: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon61

Machine

Base OS

Container

OS

Apps

Container

OS

Apps

Container

OS

Apps

CONTAINER VIRTUALISATION

Same Kernel

Linux OnlyFine-grained control

Page 188: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon61

Machine

Base OS

Container

OS

Apps

Container

OS

Apps

Container

OS

Apps

CONTAINER VIRTUALISATION

Same Kernel

Linux OnlyFine-grained control

Very fast to provision

Page 189: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon62

Page 190: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon63

DOCKER

Page 191: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon63

DOCKER

Machine

Page 192: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon63

DOCKER

Machine

Base OS

Page 193: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon63

DOCKER

Machine

Base OS

Docker

Page 194: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon63

DOCKER

Machine

Base OS

Docker

Apps

Page 195: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon63

DOCKER

Machine

Base OS

Docker

Apps Apps

Page 196: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon63

DOCKER

Machine

Base OS

Docker

Apps Apps Apps

Page 197: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon63

DOCKER

Machine

Base OS

Docker

Apps Apps Apps

Docker Image Registry

Page 198: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon63

DOCKER

Machine

Base OS

Docker

Apps Apps Apps

Docker Image Registry

Page 199: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon64

Page 200: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon64

Page 201: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon65

S/M TestsBuild Large Tests UAT ProdLarge Tests

Page 202: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon65

S/M TestsBuild Large Tests UAT ProdLarge Tests

Docker Image

Page 203: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon65

S/M TestsBuild Large Tests UAT ProdLarge Tests

Docker Image Registry

Docker Image

Page 204: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon65

S/M TestsBuild Large Tests UAT ProdLarge Tests

Docker Image Registry

Docker Image

Page 205: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon65

S/M TestsBuild Large Tests UAT ProdLarge Tests

Docker Image Registry

Docker Image

Page 206: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon66

Page 207: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon66

Be aware of - and balance - your test Pyramid

Page 208: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon66

Be aware of - and balance - your test Pyramid

Understand the balance between testing & rapid remediation

Page 209: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon66

Be aware of - and balance - your test Pyramid

Understand the balance between testing & rapid remediation

Deploy one thing at a time

Page 210: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon66

Be aware of - and balance - your test Pyramid

Understand the balance between testing & rapid remediation

Deploy one thing at a time

Consider consumer-driven contracts over integration tests

Page 211: Testing & deploying Microservices   GeeCon 2014

@samnewman#geecon66

Be aware of - and balance - your test Pyramid

Understand the balance between testing & rapid remediation

Deploy one thing at a time

Consider consumer-driven contracts over integration tests

Explore image-based deployments to reduce environment differences

Page 212: Testing & deploying Microservices   GeeCon 2014

Any questions: @samnewman

[email protected]

THANKS!