Designing for rapid release goto 2012

168
DESIGNING FOR RAPID RELEASE Sam Newman ThoughtWorks

description

 

Transcript of Designing for rapid release goto 2012

Page 1: Designing for rapid release   goto 2012

DESIGNING FOR RAPID RELEASE  

Sam Newman  

ThoughtWorks

Page 2: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

We’re hiring...

Page 3: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

We’re hiring...

Not Him

Page 4: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 5: Designing for rapid release   goto 2012
Page 6: Designing for rapid release   goto 2012
Page 7: Designing for rapid release   goto 2012
Page 8: Designing for rapid release   goto 2012
Page 9: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

We’re hiring...

Page 10: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Why is rapid release important?

Page 11: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

Page 12: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

Scaling

Page 13: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

Scaling

Durability

Page 14: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

Scaling

Durability

Geographical

Page 15: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

Scaling

Durability

Geographical

Compliance

Page 16: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

Scaling

Durability

TechnologyGeographical

Compliance

Page 17: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

What criteria influence design?

Scaling

Durability

Performance

TechnologyGeographical

Compliance

Page 18: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

What about making it easy to release?

Page 19: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 20: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Make it quick to make a change

Page 21: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Make it quick to make a change

Make it quick to deploy the change

Page 22: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Make it quick to make a change

Make it quick to deploy the change

Reduce the risk of releasing

Page 23: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShopv1

Page 24: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShopv1

Page 25: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShopv2

Page 26: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

v23 v9 v14v1

MusikShop

Page 27: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

v23 v9 v14v1

MusikShop

Page 28: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

v23 v9 v14v2

MusikShop

Page 29: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 30: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Same Change...

Page 31: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Same Change...

...resulting in very different deployments

Page 32: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 33: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 34: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 35: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 36: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 37: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 38: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 39: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

...

Page 40: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

...

Each release is a rollback point

Page 41: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

...

Each release is a rollback point

and a data gathering point

Page 42: Designing for rapid release   goto 2012

@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

Page 43: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Small, Incremental Releases FTW!

Page 44: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

So how do we design our systems to allow

for small changes?

Page 45: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 46: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

Page 47: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

RekomendLib

Page 48: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

RekomendLib

Invoice Creation

Page 49: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

RekomendLib

Invoice Creation

...

Page 50: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

RekomendLib

Invoice Creation

String Utils

...

Page 51: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

RekomendLib

Invoice Creation

String Utils

...

Small units - easier to reason about

Page 52: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

RekomendLib

Invoice Creation

String Utils

...

Small units - easier to reason about

Fast CI turnaround cycles

Page 53: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 54: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Page 55: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

RekomendLib v134

Page 56: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

RekomendLib v134

RekomendLib v200

Page 57: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

RekomendLib v134

MusikShop v2

RekomendLib v200

Page 58: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

RekomendLib v134

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

MusikShop v2

RekomendLib v200

Page 59: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Page 60: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Page 61: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Page 62: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

Page 63: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

Page 64: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Page 65: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

Page 66: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

Smoke Test

Page 67: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

Smoke Test

Showcase

Page 68: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

Smoke Test

Showcase

Page 69: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

Rekomender v124

Rekomender v200

Smoke Test

Showcase

Blue/Green Deployments

Page 70: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 71: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 72: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

What can stop blue/green deployments?

Page 73: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

User

Page 74: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

User

Page 75: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1

User

State

Page 76: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1 MusikShop v2

User

State

Page 77: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1 MusikShop v2

User

State

Page 78: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1 MusikShop v2

User

State

Page 79: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop v1 MusikShop v2

Avoid stateful services

User

State

Page 80: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Expensive Hardware!

Page 81: Designing for rapid release   goto 2012

@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’!

Page 82: Designing for rapid release   goto 2012

@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’!

Page 83: Designing for rapid release   goto 2012

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

Page 84: Designing for rapid release   goto 2012

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

Page 85: Designing for rapid release   goto 2012

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

Page 86: Designing for rapid release   goto 2012

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

Page 87: Designing for rapid release   goto 2012

@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’!

Page 88: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 89: Designing for rapid release   goto 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’!

Page 90: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Async Behaviour

MusikShop v1www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!

Page 91: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Async Behaviour

MusikShop v1www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!

Page 92: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Async Behaviour

MusikShop v1www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!Waiting...

Page 93: Designing for rapid release   goto 2012

@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...

Page 94: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Async Behaviour

MusikShop v1

Rekomender v200

www.MusikShop

Take That

Queens Of The Stone Age

Snoop Dogg

We Rekomend ‘The Brakes’!

Page 95: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 96: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Things to watch for...

Page 97: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Trifle

Page 98: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Trifle

Musik Web

Page 99: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Trifle

Musik Web

Persistence

Page 100: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Trifle

Musik Web

Persistence

Page 101: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Trifle

Musik Web

Persistence

Page 102: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Trifle

Musik Web

Persistence

Page 103: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 104: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 105: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 106: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Spider

Page 107: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Spider

CD Ordering System

Page 108: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Spider

CD Ordering System

Whitemail System

Page 109: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Spider

CD Ordering System

Whitemail System Data Wharehouse

Page 110: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Spider

CD Ordering System

Whitemail System Data Wharehouse

3rd Party Supplier

Page 111: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

The Spider

CD Ordering System

Whitemail System Data Wharehouse

3rd Party SupplierFinance System

Page 112: Designing for rapid release   goto 2012

@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

Page 113: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 114: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 115: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

“A set of capabilities on an endpoint”

Page 116: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Page 117: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Add to cart

Page 118: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Add to cart

Checkout

Page 119: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Add to cart

Checkout

View Latest Releases

Page 120: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Add to cart

Checkout

View Latest Releases

Search

Page 121: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Add to cart

Checkout

View Latest Releases

Search

Listen To Previews

Page 122: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Add to cart

CheckoutView Latest

Releases

Search

Listen To Previews

Page 123: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Add to cart

CheckoutView Latest

Releases

Search

Listen To Previews

Shopping Cart Catalog

Music Library

Page 124: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Model Services Based On Your Business

Domain

Page 125: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

v1

Reko.v9

Page 126: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

v1

Reko.v9

Reko.v10

MusikShop

v1

Internal Change

Page 127: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

v1

Reko.v9

Reko.v10

MusikShop

v1

Internal Change Expansion

Reko.v10

MusikShop

v1

Page 128: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

v1

Reko.v9

Reko.v10

MusikShop

v1

MusikShop

v2

Reko.v10

Internal Change Expansion Interface

Change

Reko.v10

MusikShop

v1

Page 129: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Rekomender V9

v1

MusikShop

Page 130: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Rekomender V9

v1

MusikShop

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

Page 131: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Rekomender V9

v1

MusikShop

v2

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

Page 132: Designing for rapid release   goto 2012

@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...

Page 133: Designing for rapid release   goto 2012

@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...

Page 134: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

Page 135: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

Page 136: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

Page 137: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

Shared Lib v2

Page 138: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

Shared Lib v2

Beware of shared serialization protocols

Page 139: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

Shared Lib v2

Beware of shared serialization protocols

WSDL-binding

Page 140: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Service B

Service A

Shared Lib v1

Shared Lib v1

Shared Lib v2

Beware of shared serialization protocols

WSDL-bindingJAXB

Page 141: Designing for rapid release   goto 2012

@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

Page 142: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

RFC 761

Page 143: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

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

what you expect“

Page 144: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop Rekomender

Consumer Driven Contracts

Page 145: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop Rekomender

Consumer Driven Contracts

Page 146: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop Rekomender

Consumer Driven Contracts

Page 147: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop Rekomender

Consumer Driven Contracts

Page 148: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

DATABASES!

Page 149: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

DATA IS COOL

Page 150: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

DATABASES ARE EVIL

Page 151: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

DB Schema

Page 152: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

DB Schema

Page 153: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

DB Schema

Page 154: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

Schema Schema

DB Instance

Page 155: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

Schema Schema

DB Instance

Each service owns its own data

Page 156: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

RDMS RDMS

Page 157: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

RekomenderMusikShop

RDMS RDMSRiak

Page 158: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Riak

Rekomender

RDBMS

Page 159: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Riak

Rekomender

RDBMS

Release 1: Dual Write

Page 160: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Riak

Rekomender

RDBMS

Release 1: Dual Write

Release 2: Read from Riak

Page 161: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Riak

Rekomender

Release 1: Dual Write

Release 2: Read from Riak

Release 3: Retire RDMS

Page 162: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

Rekomender

Page 163: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

Rekomender AceSuggest

Page 164: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

Rekomender AceSuggest

Page 165: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

MusikShop

Rekomender AceSuggest

Dark Launching!

Page 166: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Decompose Your Systems

Model Your Domain

Get Interfaces Right

Seperate Deployment From Release

Page 167: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Questions?

Page 168: Designing for rapid release   goto 2012

@samnewmanGOTO: Aarhus 2012

Thanks!

@samnewman

We’re hiring!