testing & deploying microservices - xp days ukraine 2014

143
TESTING & DEPLOYING MICROSERVICES Sam Newman XP Days Ukraine, December 2014 1

Upload: sam-newman

Post on 12-Jul-2015

617 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Testing & deploying microservices  - XP Days Ukraine 2014

TESTING & DEPLOYING MICROSERVICESSam Newman XP Days Ukraine, December 2014

1

Page 2: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Accounts

Returns

Invoicing

Shipping

Inventory

Customer Service

Page 3: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Accounts

Returns

Invoicing

Shipping

Inventory

Customer Service

Small Autonomous services that work together

Page 4: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Independently Releasable

Page 5: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

Deployment

Page 6: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Host

Service

Page 7: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Host

Service

Host

Service Service

Service Service

VS

Page 8: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Host

Service

Host

Service Service

Service Service

Much Easier To Reason About

VS

Page 9: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Host

Service

Host

Service Service

Service Service

Much Easier To Reason About

Easier To Provision

VS

Page 10: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Host

Service

Host

Service Service

Service Service

Much Easier To Reason About

Easier To Provision

Fewer Side-effects

VS

Page 11: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Host

Service

Host

Service Service

Service Service

Much Easier To Reason About

Easier To Provision

Fewer Side-effects

VS

Enforces Interdependence

Page 12: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Host

Service

Host

Service Service

Service Service

Much Easier To Reason About

Easier To Provision

Fewer Side-effectsLower host-management overhead

VS

Enforces Interdependence

Page 13: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Host

Service

Host

Service Service

Service Service

Much Easier To Reason About

Easier To Provision

Fewer Side-effectsCheaper!

Lower host-management overhead

VS

Enforces Interdependence

Page 14: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Reducing Host Management Overhead?

Page 15: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

API-driven Host Provisioning

Page 16: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Virtualisation Platforms

Page 17: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

VMWare

Virtualisation Platforms

Page 18: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

VMWareAWS

Digital Ocean

Virtualisation Platforms

Page 19: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Step 0: Provision Host

Page 20: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Step 0: Provision Host

Step 1: Configure Host

Page 21: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Step 0: Provision Host

Step 2: Install Service

Step 1: Configure Host

Page 22: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Step 0: Provision Host

Step 2: Install Service

Step 1: Configure Host

Page 23: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Page 24: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

STANDARD VIRTUALISATION

Page 25: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

STANDARD VIRTUALISATION

Page 26: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

STANDARD VIRTUALISATION

Page 27: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Hypervisor

STANDARD VIRTUALISATION

Page 28: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Hypervisor

VM

STANDARD VIRTUALISATION

Page 29: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Hypervisor

VM

OS

STANDARD VIRTUALISATION

Page 30: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Hypervisor

VM

OS

Apps

STANDARD VIRTUALISATION

Page 31: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Hypervisor

VM

OS

AppsPacker Image

STANDARD VIRTUALISATION

Page 32: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Hypervisor

VM

OS

Apps

VM

OS

AppsPacker Image

STANDARD VIRTUALISATION

Page 33: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Hypervisor

VM

OS

Apps

VM

OS

Apps

VM

OS

AppsPacker Image

STANDARD VIRTUALISATION

Page 34: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Ansible

Puppet

Chef

Page 35: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Ansible

Puppet

Chef

Page 36: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Page 37: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Vagrant

Page 38: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Vagrant

Immutable Servers

Page 39: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Vagrant

Immutable Servers

Fast Spin-up

Page 40: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Vagrant

Immutable Servers

Fast Spin-up

Provider Agnostic

Page 41: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Vagrant

Immutable Servers

Fast Spin-up

Provider Agnostic

Feedback Can Suffer

Page 42: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Ansible

Puppet

Chef

AWS

Digital Ocean

OpenStack

VMWare

Vagrant

Immutable Servers

Fast Spin-up

Provider Agnostic

Feedback Can Suffer

Cycle Time

Page 43: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Immutable Servers

Page 44: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Cost?

Page 45: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Hypervisor

VM

OS

Apps

VM

OS

Apps

VM

OS

Apps

Page 46: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Hypervisor

VM

OS

Apps

VM

OS

Apps

VM

OS

Apps

Expensive!

Page 47: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Page 48: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

CONTAINER VIRTUALISATION

Page 49: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

CONTAINER VIRTUALISATION

Page 50: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

CONTAINER VIRTUALISATION

Page 51: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Container

CONTAINER VIRTUALISATION

Page 52: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Container

OS

CONTAINER VIRTUALISATION

Page 53: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Container

OS

Apps

CONTAINER VIRTUALISATION

Page 54: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Container

OS

Apps

Container

OS

Apps

CONTAINER VIRTUALISATION

Page 55: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Container

OS

Apps

Container

OS

Apps

Container

OS

Apps

CONTAINER VIRTUALISATION

Page 56: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Container

OS

Apps

Container

OS

Apps

Container

OS

Apps Linux Only

CONTAINER VIRTUALISATION

Page 57: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Container

OS

Apps

Container

OS

Apps

Container

OS

Apps

Same Kernel

Linux Only

CONTAINER VIRTUALISATION

Page 58: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Container

OS

Apps

Container

OS

Apps

Container

OS

Apps

Same Kernel

Linux OnlyFine-grained control

CONTAINER VIRTUALISATION

Page 59: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Machine

Base OS

Container

OS

Apps

Container

OS

Apps

Container

OS

Apps

Same Kernel

Linux OnlyFine-grained control

Very fast to provision

CONTAINER VIRTUALISATION

Page 60: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Page 61: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

DOCKER

Page 62: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

DOCKER

Machine

Page 63: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

DOCKER

Machine

Base OS

Page 64: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

DOCKER

Machine

Base OS

Docker

Page 65: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

DOCKER

Machine

Base OS

Docker

Apps

Page 66: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

DOCKER

Machine

Base OS

Docker

Apps Apps

Page 67: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

DOCKER

Machine

Base OS

Docker

Apps Apps Apps

Page 68: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

DOCKER

Machine

Base OS

Docker

Apps Apps Apps

Docker Image Registry

Page 69: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

DOCKER

Machine

Base OS

Docker

Apps Apps Apps

Docker Image Registry

Page 70: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

DOCKER

Machine

Base OS

Docker

Apps Apps Apps

Docker Image Registry

Page 71: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Page 72: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Page 73: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Semi-permanent Servers

Page 74: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Semi-permanent Servers

Image-based Deployments

Page 75: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Semi-permanent Servers

Image-based Deployments

Docker

Page 76: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Page 77: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Page 78: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Page 79: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

kubernetes

Page 80: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

Page 81: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Unit

Service

UI

MIKE COHN’S TEST PYRAMID

Page 82: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Unit

Service

UI

MIKE COHN’S TEST PYRAMID

Increasing Scope

More Confidence

Page 83: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Unit

Service

UI

MIKE COHN’S TEST PYRAMID

Increasing Scope

More Confidence

Faster!

Better Isolation

Page 84: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#geecon25

DB

Unit

UI

Service

Page 85: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#geecon25

DB

Unit

UI

Service

Page 86: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#geecon26

DB

Unit

UI

Service

Page 87: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#geecon26

DB

Unit

UI

Service

Page 88: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#geecon27

DB

Unit

UI

Service

Page 89: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#geecon27

DB

Unit

UI

Service

Page 90: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#geecon27

DB

Unit

UI

Service

Page 91: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

InventoryAccounts

Returns

Invoicing

Shipping

Customer Service

Page 92: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

InventoryAccounts

Returns

Invoicing

Shipping

Customer Service

Inventory

Page 93: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

InventoryAccounts

Returns

Invoicing

Shipping

Customer Service

Inventory

Page 94: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Inventory Accounts

Mountebank http://www.mbtest.org

Page 95: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

InventoryAccountsStub

Mountebank http://www.mbtest.org

Page 96: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Shipping

InventoryAccounts

Returns

Invoicing

Customer Service

Page 97: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Shipping

InventoryAccounts

Returns

Invoicing

Customer Service

Page 98: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Shipping

InventoryAccounts

Returns

Invoicing

Customer Service

Page 99: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Shipping

InventoryAccounts

Returns

Invoicing

Customer Service

Page 100: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Shipping

InventoryAccounts

Returns

Invoicing

Customer Service

Page 101: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Page 102: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Browsers

Page 103: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Timing

Browsers

Page 104: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Provisioning of Environments

Timing

Browsers

Page 105: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Provisioning of Environments

Networks

Timing

Browsers

Page 106: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Deployment

Provisioning of Environments

Networks

Timing

Browsers

Page 107: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Deployment

Provisioning of Environments

Networks

Timing

Browsers Diagnosis

Page 108: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Shipping Inventory

CONSUMER-DRIVEN CONTRACTS

Page 109: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Expectations

Shipping Inventory

CONSUMER-DRIVEN CONTRACTS

Page 110: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Expectations

Shipping Inventory

CONSUMER-DRIVEN CONTRACTS

Page 111: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Expectations

Prod

Shipping Inventory

CONSUMER-DRIVEN CONTRACTS

Page 112: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Expectations

Prod

Shipping Inventory

CONSUMER-DRIVEN CONTRACTS

Page 113: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Page 114: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

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

Page 115: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

No Integration Tests?

Page 116: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Journeys

Page 117: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

Page 118: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

S/M TestsBuild Large Tests

Page 119: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

S/M TestsBuild Large Tests

Page 120: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

S/M TestsBuild Large Tests Production

Page 121: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

S/M TestsBuild Large Tests Production

Monitoring & Alerting

Page 122: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

S/M TestsBuild Large Tests Production

Monitoring & Alerting

Testers

Page 123: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

S/M TestsBuild Large Tests Production

Monitoring & Alerting

Testers Operations

Page 124: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Monitoring & AlertingTesting

Page 125: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Prod

Prod

Prod

Prod

Page 126: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Prod

Prod

Prod

Prod

QA

Page 127: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Monitoring & Alerting

Testing

Page 128: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Monitoring & Alerting

Testing

Page 129: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Monitoring & Alerting

Testing

Page 130: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Monitoring & Alerting

Testing

Page 131: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Page 132: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Page 133: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

SEMANTIC MONITORING

Page 134: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdayshttps://www.flickr.com/photos/robdray/3138644233

Page 135: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

Deployment

Page 136: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

Deployment

One-server per host

Page 137: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

Deployment

One-server per host

Image/docker based artefacts

Page 138: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

Deployment

One-server per host Immutable ServersImage/docker

based artefacts

Page 139: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

Pre-Release Validation

Consumer-driven Contracts

Isolated Service Tests

Journey Tests

Deployment

One-server per host Immutable ServersImage/docker

based artefacts

Page 140: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Testing

Post-Release Validation

Semantic Monitoring

Pre-Release Validation

Consumer-driven Contracts

Isolated Service Tests

Journey Tests

Deployment

One-server per host Immutable ServersImage/docker

based artefacts

Page 141: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

http://buildingmicroservices.com/

Code: AUTHD

Page 142: Testing & deploying microservices  - XP Days Ukraine 2014

@samnewman#xpdays

http://lanyrd.com/profile/samnewman/

Page 143: Testing & deploying microservices  - XP Days Ukraine 2014

Sam Newman @samnewman

THANKS!