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


Top Related