Designing for rapid release goto 2012

Post on 24-Dec-2014

381 views 0 download

description

 

Transcript of Designing for rapid release goto 2012

DESIGNING FOR RAPID RELEASE  

Sam Newman  

ThoughtWorks

@samnewmanGOTO: Aarhus 2012

We’re hiring...

@samnewmanGOTO: Aarhus 2012

We’re hiring...

Not Him

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

We’re hiring...

@samnewmanGOTO: Aarhus 2012

Why is rapid release important?

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

Scaling

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

Scaling

Durability

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

Scaling

Durability

Geographical

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

Scaling

Durability

Geographical

Compliance

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

Scaling

Durability

TechnologyGeographical

Compliance

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

Scaling

Durability

Performance

TechnologyGeographical

Compliance

@samnewmanGOTO: Aarhus 2012

What about making it easy to release?

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

Make it quick to make a change

@samnewmanGOTO: Aarhus 2012

Make it quick to make a change

Make it quick to deploy the change

@samnewmanGOTO: Aarhus 2012

Make it quick to make a change

Make it quick to deploy the change

Reduce the risk of releasing

@samnewmanGOTO: Aarhus 2012

MusikShopv1

@samnewmanGOTO: Aarhus 2012

MusikShopv1

@samnewmanGOTO: Aarhus 2012

MusikShopv2

@samnewmanGOTO: Aarhus 2012

v23 v9 v14v1

MusikShop

@samnewmanGOTO: Aarhus 2012

v23 v9 v14v1

MusikShop

@samnewmanGOTO: Aarhus 2012

v23 v9 v14v2

MusikShop

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

The Same Change...

@samnewmanGOTO: Aarhus 2012

The Same Change...

...resulting in very different deployments

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

...

@samnewmanGOTO: Aarhus 2012

...

Each release is a rollback point

@samnewmanGOTO: Aarhus 2012

...

Each release is a rollback point

and a data gathering point

@samnewmanGOTO: Aarhus 2012

...

Each release is a rollback point

and a data gathering point

and a release process practiced often is more likely to work and to be efficient

@samnewmanGOTO: Aarhus 2012

Small, Incremental Releases FTW!

@samnewmanGOTO: Aarhus 2012

So how do we design our systems to allow

for small changes?

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

@samnewmanGOTO: Aarhus 2012

MusikShop

RekomendLib

@samnewmanGOTO: Aarhus 2012

MusikShop

RekomendLib

Invoice Creation

@samnewmanGOTO: Aarhus 2012

MusikShop

RekomendLib

Invoice Creation

...

@samnewmanGOTO: Aarhus 2012

MusikShop

RekomendLib

Invoice Creation

String Utils

...

@samnewmanGOTO: Aarhus 2012

MusikShop

RekomendLib

Invoice Creation

String Utils

...

Small units - easier to reason about

@samnewmanGOTO: Aarhus 2012

MusikShop

RekomendLib

Invoice Creation

String Utils

...

Small units - easier to reason about

Fast CI turnaround cycles

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

@samnewmanGOTO: Aarhus 2012

MusikShop v1

RekomendLib v134

@samnewmanGOTO: Aarhus 2012

MusikShop v1

RekomendLib v134

RekomendLib v200

@samnewmanGOTO: Aarhus 2012

MusikShop v1

RekomendLib v134

MusikShop v2

RekomendLib v200

@samnewmanGOTO: Aarhus 2012

MusikShop v1

RekomendLib v134

Change to a statically linked library = new deployment of the application

MusikShop v2

RekomendLib v200

@samnewmanGOTO: Aarhus 2012

MusikShop v1

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

Smoke Test

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

Smoke Test

Showcase

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

Smoke Test

Showcase

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

Smoke Test

Showcase

Blue/Green Deployments

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

What can stop blue/green deployments?

@samnewmanGOTO: Aarhus 2012

User

@samnewmanGOTO: Aarhus 2012

MusikShop v1

User

@samnewmanGOTO: Aarhus 2012

MusikShop v1

User

State

@samnewmanGOTO: Aarhus 2012

MusikShop v1 MusikShop v2

User

State

@samnewmanGOTO: Aarhus 2012

MusikShop v1 MusikShop v2

User

State

@samnewmanGOTO: Aarhus 2012

MusikShop v1 MusikShop v2

User

State

@samnewmanGOTO: Aarhus 2012

MusikShop v1 MusikShop v2

Avoid stateful services

User

State

@samnewmanGOTO: Aarhus 2012

Expensive Hardware!

@samnewmanGOTO: Aarhus 2012

Manual Circuit Breaker

MusikShop v1

Rekomender v124

www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!

@samnewmanGOTO: Aarhus 2012

Manual Circuit Breaker

MusikShop v1

Rekomender v124

www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!

@samnewmanGOTO: Aarhus 2012

Manual Circuit Breaker

MusikShop v1

Rekomender v124

www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!We Can’t Rekomend

Right Now!

@samnewmanGOTO: Aarhus 2012

Manual Circuit Breaker

MusikShop v1

Rekomender v124

Rekomender v200

www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!We Can’t Rekomend

Right Now!

@samnewmanGOTO: Aarhus 2012

Manual Circuit Breaker

MusikShop v1

Rekomender v124

Rekomender v200 Smoke Test

www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!We Can’t Rekomend

Right Now!

@samnewmanGOTO: Aarhus 2012

Manual Circuit Breaker

MusikShop v1

Rekomender v124

Rekomender v200 Smoke Test

www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!We Can’t Rekomend

Right Now!

@samnewmanGOTO: Aarhus 2012

Manual Circuit Breaker

MusikShop v1

Rekomender v124

Rekomender v200 Smoke Test

www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

Async Behaviour

MusikShop v1

Rekomender v124

www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!

@samnewmanGOTO: Aarhus 2012

Async Behaviour

MusikShop v1www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!

@samnewmanGOTO: Aarhus 2012

Async Behaviour

MusikShop v1www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!

@samnewmanGOTO: Aarhus 2012

Async Behaviour

MusikShop v1www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!Waiting...

@samnewmanGOTO: Aarhus 2012

Async Behaviour

MusikShop v1

Rekomender v200

www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!Waiting...

@samnewmanGOTO: Aarhus 2012

Async Behaviour

MusikShop v1

Rekomender v200

www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

Things to watch for...

@samnewmanGOTO: Aarhus 2012

The Trifle

@samnewmanGOTO: Aarhus 2012

The Trifle

Musik Web

@samnewmanGOTO: Aarhus 2012

The Trifle

Musik Web

Persistence

@samnewmanGOTO: Aarhus 2012

The Trifle

Musik Web

Persistence

@samnewmanGOTO: Aarhus 2012

The Trifle

Musik Web

Persistence

@samnewmanGOTO: Aarhus 2012

The Trifle

Musik Web

Persistence

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

The Spider

@samnewmanGOTO: Aarhus 2012

The Spider

CD Ordering System

@samnewmanGOTO: Aarhus 2012

The Spider

CD Ordering System

Whitemail System

@samnewmanGOTO: Aarhus 2012

The Spider

CD Ordering System

Whitemail System Data Wharehouse

@samnewmanGOTO: Aarhus 2012

The Spider

CD Ordering System

Whitemail System Data Wharehouse

3rd Party Supplier

@samnewmanGOTO: Aarhus 2012

The Spider

CD Ordering System

Whitemail System Data Wharehouse

3rd Party SupplierFinance System

@samnewmanGOTO: Aarhus 2012

The Spider

CD Ordering System

Whitemail System Data Wharehouse

3rd Party SupplierFinance SystemDumb System 4

Dumb System 1 Dumb System 2

Dumb System 3

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

“A set of capabilities on an endpoint”

@samnewmanGOTO: Aarhus 2012

@samnewmanGOTO: Aarhus 2012

Add to cart

@samnewmanGOTO: Aarhus 2012

Add to cart

Checkout

@samnewmanGOTO: Aarhus 2012

Add to cart

Checkout

View Latest Releases

@samnewmanGOTO: Aarhus 2012

Add to cart

Checkout

View Latest Releases

Search

@samnewmanGOTO: Aarhus 2012

Add to cart

Checkout

View Latest Releases

Search

Listen To Previews

@samnewmanGOTO: Aarhus 2012

Add to cart

CheckoutView Latest

Releases

Search

Listen To Previews

@samnewmanGOTO: Aarhus 2012

Add to cart

CheckoutView Latest

Releases

Search

Listen To Previews

Shopping Cart Catalog

Music Library

@samnewmanGOTO: Aarhus 2012

Model Services Based On Your Business

Domain

@samnewmanGOTO: Aarhus 2012

MusikShop

v1

Reko.v9

@samnewmanGOTO: Aarhus 2012

MusikShop

v1

Reko.v9

Reko.v10

MusikShop

v1

Internal Change

@samnewmanGOTO: Aarhus 2012

MusikShop

v1

Reko.v9

Reko.v10

MusikShop

v1

Internal Change Expansion

Reko.v10

MusikShop

v1

@samnewmanGOTO: Aarhus 2012

MusikShop

v1

Reko.v9

Reko.v10

MusikShop

v1

MusikShop

v2

Reko.v10

Internal Change Expansion Interface

Change

Reko.v10

MusikShop

v1

@samnewmanGOTO: Aarhus 2012

Rekomender V9

v1

MusikShop

@samnewmanGOTO: Aarhus 2012

Rekomender V9

v1

MusikShop

Non-breaking expansion is to be preferred - but if you can’t...

@samnewmanGOTO: Aarhus 2012

Rekomender V9

v1

MusikShop

v2

Non-breaking expansion is to be preferred - but if you can’t...

@samnewmanGOTO: Aarhus 2012

Rekomender V9

v1

MusikShop

v2

iOS App

Consider maintaining multiple service endpoints

Non-breaking expansion is to be preferred - but if you can’t...

@samnewmanGOTO: Aarhus 2012

Rekomender V9

v1

MusikShop

v2

iOS App

Consider maintaining multiple service endpoints

Non-breaking expansion is to be preferred - but if you can’t...

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

Shared Lib v2

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

Shared Lib v2

Beware of shared serialization protocols

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

Shared Lib v2

Beware of shared serialization protocols

WSDL-binding

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

Shared Lib v2

Beware of shared serialization protocols

WSDL-bindingJAXB

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

Shared Lib v2

Beware of shared serialization protocols

WSDL-bindingJAXB

Java Serialization

@samnewmanGOTO: Aarhus 2012

RFC 761

@samnewmanGOTO: Aarhus 2012

Postel’s Law: “Be conservative in what you do, be liberal in

what you expect“

@samnewmanGOTO: Aarhus 2012

MusikShop Rekomender

Consumer Driven Contracts

@samnewmanGOTO: Aarhus 2012

MusikShop Rekomender

Consumer Driven Contracts

@samnewmanGOTO: Aarhus 2012

MusikShop Rekomender

Consumer Driven Contracts

@samnewmanGOTO: Aarhus 2012

MusikShop Rekomender

Consumer Driven Contracts

@samnewmanGOTO: Aarhus 2012

DATABASES!

@samnewmanGOTO: Aarhus 2012

DATA IS COOL

@samnewmanGOTO: Aarhus 2012

DATABASES ARE EVIL

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

DB Schema

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

DB Schema

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

DB Schema

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

Schema Schema

DB Instance

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

Schema Schema

DB Instance

Each service owns its own data

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

RDMS RDMS

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

RDMS RDMSRiak

@samnewmanGOTO: Aarhus 2012

Riak

Rekomender

RDBMS

@samnewmanGOTO: Aarhus 2012

Riak

Rekomender

RDBMS

Release 1: Dual Write

@samnewmanGOTO: Aarhus 2012

Riak

Rekomender

RDBMS

Release 1: Dual Write

Release 2: Read from Riak

@samnewmanGOTO: Aarhus 2012

Riak

Rekomender

Release 1: Dual Write

Release 2: Read from Riak

Release 3: Retire RDMS

@samnewmanGOTO: Aarhus 2012

MusikShop

Rekomender

@samnewmanGOTO: Aarhus 2012

MusikShop

Rekomender AceSuggest

@samnewmanGOTO: Aarhus 2012

MusikShop

Rekomender AceSuggest

@samnewmanGOTO: Aarhus 2012

MusikShop

Rekomender AceSuggest

Dark Launching!

@samnewmanGOTO: Aarhus 2012

Decompose Your Systems

Model Your Domain

Get Interfaces Right

Seperate Deployment From Release

@samnewmanGOTO: Aarhus 2012

Questions?

@samnewmanGOTO: Aarhus 2012

Thanks!

@samnewman

We’re hiring!