Designing for rapid release goto 2012
-
Upload
sam-newman -
Category
Documents
-
view
381 -
download
0
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!