Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Designing For Rapid Release
Sam Newman
Thursday, 17 May 12
@samnewman#GeeCON, 2012
We’re hiring...
Not Him
Thursday, 17 May 12
@samnewman#GeeCON, 2012Thursday, 17 May 12
Thursday, 17 May 12
5
h#p://www.thoughtworks.com/radar
TECHNOLOGYRADARtwice yearly report from the technical advisory board (TAB)
Highly opinionated, reflecting the views of the members of the TAB
Thursday, 17 May 12
@samnewman#GeeCON, 2012
We’re hiring...
Thursday, 17 May 12
@samnewman#GeeCON, 2012
Why is rapid release important?
Thursday, 17 May 12
@samnewman#GeeCON, 2012
What criteria influence design?
Scaling
Durability
Performance
TechnologyGeographical
Compliance
Thursday, 17 May 12
@samnewman#GeeCON, 2012
What about making it easy to release?
Thursday, 17 May 12
@samnewman#GeeCON, 2012
Make it quick to make a change
Make it quick to deploy the change
Reduce the risk of releasing
Thursday, 17 May 12
@samnewman#GeeCON, 2012
MusikShopv1
MusikShopv2
Thursday, 17 May 12
@samnewman#GeeCON, 2012
v23 v9 v14v2v1
MusikShop
Thursday, 17 May 12
@samnewman#GeeCON, 2012
The Same Change...
...resulting in very different deployments
Thursday, 17 May 12
@samnewman#GeeCON, 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
Thursday, 17 May 12
@samnewman#GeeCON, 2012
Small, Incremental Releases FTW!
Thursday, 17 May 12
@samnewman#GeeCON, 2012
So how do we design our systems to allow
for small changes?
Thursday, 17 May 12
@samnewman#GeeCON, 2012
MusikShop
RekomendLib
Invoice Creation
String Utils
...
Small units - easier to reason about
Fast CI turnaround cycles
Thursday, 17 May 12
@samnewman#GeeCON, 2012
MusikShop v1
RekomendLib v134
Change to a statically linked library = new deployment of the application
MusikShop v2
RekomendLib v200
Thursday, 17 May 12
@samnewman#GeeCON, 2012
MusikShop v1
Rekomender v124
Rekomender v200
Thursday, 17 May 12
@samnewman#GeeCON, 2012
MusikShop v1
Rekomender v124
Rekomender v200
Smoke Test
Showcase
Thursday, 17 May 12
@samnewman#GeeCON, 2012Thursday, 17 May 12
@samnewman#GeeCON, 2012
What can stop blue/green deployments?
Thursday, 17 May 12
@samnewman#GeeCON, 2012
MusikShop v1 MusikShop v2
Avoid stateful services
User
State
Thursday, 17 May 12
@samnewman#GeeCON, 2012
Expensive Hardware!
Thursday, 17 May 12
@samnewman#GeeCON, 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!
Thursday, 17 May 12
@samnewman#GeeCON, 2012Thursday, 17 May 12
@samnewman#GeeCON, 2012
Async Behaviour
MusikShop v1
Rekomender v124
Rekomender v200
www.MusikShop
Take That
Queens Of The Stone Age
Snoop Dogg
We Rekomend ‘The Brakes’!Waiting...
Thursday, 17 May 12
@samnewman#GeeCON, 2012Thursday, 17 May 12
@samnewman#GeeCON, 2012
Things to watch for...
Thursday, 17 May 12
@samnewman#GeeCON, 2012
The Trifle
Musik Web
Persistence
Thursday, 17 May 12
@samnewman#GeeCON, 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
Thursday, 17 May 12
@samnewman#GeeCON, 2012
“A set of capabilities on an endpoint”
Thursday, 17 May 12
@samnewman#GeeCON, 2012
Add to cart
Checkout
View Latest Releases
Search
Listen To Previews
Shopping Cart Catalog
Music Library
Thursday, 17 May 12
@samnewman#GeeCON, 2012
Model Services Based On Your Business
Domain
Thursday, 17 May 12
@samnewman#GeeCON, 2012
MusikShop
v1
Reko.v9
Reko.v10
MusikShop
v1
MusikShop
v2
Reko.v10
InternalChange Expansion Interface
Change
Reko.v10
MusikShop
v1
Thursday, 17 May 12
@samnewman#GeeCON, 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...
Thursday, 17 May 12
@samnewman#GeeCON, 2012
Service B
Service A
Shared Lib v1
Shared Lib v1
Shared Lib v2
Beware of shared serialization protocols
WSDL-bindingJAXB
Java Serialization
Thursday, 17 May 12
@samnewman#GeeCON, 2012
RFC 761
Thursday, 17 May 12
@samnewman#GeeCON, 2012
Postel’s Law:“Be conservative in what you do, be liberal in
what you expect“
Thursday, 17 May 12
@samnewman#GeeCON, 2012
MusikShop Rekomender
Consumer Driven Contracts
Thursday, 17 May 12
@samnewman#GeeCON, 2012
DATABASES!
Thursday, 17 May 12
@samnewman#GeeCON, 2012
DATA IS COOL
Thursday, 17 May 12
@samnewman#GeeCON, 2012
DATABASES ARE EVIL
Thursday, 17 May 12
@samnewman#GeeCON, 2012
RekomenderMusikShop
DB Schema
Thursday, 17 May 12
@samnewman#GeeCON, 2012
RekomenderMusikShop
Schema Schema
DB Instance
Each service owns its own data
Thursday, 17 May 12
@samnewman#GeeCON, 2012
RekomenderMusikShop
RDMS RDMSRiak
Thursday, 17 May 12
@samnewman#GeeCON, 2012
Riak
Rekomender
RDBMS
Release 1: Dual Write
Release 2: Read from Riak
Release 3: Retire RDMS
Thursday, 17 May 12
@samnewman#GeeCON, 2012
MusikShop
Rekomender AceSuggest
Dark Launching!
Thursday, 17 May 12
@samnewman#GeeCON, 2012
Decompose Your Systems
Model Your Domain
Get Interfaces Right
Seperate Deployment From Release
Thursday, 17 May 12
@samnewman#GeeCON, 2012
Questions?
Thursday, 17 May 12
Thanks!Sam Newman - @samnewmansnewman@thoughtworks,com
Thursday, 17 May 12