DESIGNING FOR RAPID RELEASE Sam Newman ThoughtWorks Tuesday, 2 October 12
Not Him We’re hiring... @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
@samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Tuesday, 2 October 12
We’re hiring... @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Why is rapid release important? @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Performance Scaling Compliance Durability What criteria influence design? Technology Geographical @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
What about making it easy to release? @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Make it quick to make a change Make it quick to deploy the change Reduce the risk of releasing @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
MusikShop MusikShop v1 v2 @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
v1 v2 v23 v9 v14 MusikShop @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
The Same Change... ...resulting in very different deployments @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
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 @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Small, Incremental Releases FTW! @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
So how do we design our systems to allow for small changes? @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Small units - easier to MusikShop reason about Rekomend Lib Fast CI turnaround cycles Invoice Creation ... String Utils @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
MusikShop v2 MusikShop v1 Rekomend Rekomend Lib v134 Lib v200 Change to a statically linked library = new deployment of the application @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
MusikShop v1 Rekomender Rekomender v124 v200 @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Showcase MusikShop v1 Smoke Test Rekomender Rekomender v124 v200 Blue/Green Deployments @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
@samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
What can stop blue/ green deployments? @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
User MusikShop v1 MusikShop v2 State Avoid stateful services @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Expensive Hardware! @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The We Can’t Rekomend Brakes’! Right Now! Rekomender Rekomender Smoke Test v124 v200 Manual Circuit Breaker @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
@samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
www.MusikShop MusikShop v1 Queens Of The Stone Age Take That Snoop Dogg We Rekomend ‘The Waiting... Brakes’! Rekomender Rekomender v124 v200 Async Behaviour @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
@samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Things to watch for... @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Musik Web Persistence The Trifle @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
@samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
@samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
@samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Dumb System 2 Whitemail System Data Wharehouse Dumb System 1 CD Ordering System Dumb System 4 Finance System Dumb System 3 3rd Party Supplier The Spider @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
“A set of capabilities on an endpoint” @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Search Shopping Cart Catalog Add to cart View Latest Releases Checkout Music Library Listen To Previews @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Model Services Based On Your Business Domain @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Musik Musik Musik Musik Shop Shop Shop Shop v1 v1 v1 v2 Reko. Reko. Reko. Reko. v10 v10 v10 v9 Internal Interface Expansion Change Change @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Non-breaking expansion is to be preferred - but Rekomender V9 if you can’t... v1 v2 Consider maintaining multiple service endpoints iOS Musik App Shop @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Service A Beware of shared serialization protocols Shared Lib v1 Shared Lib v2 WSDL-binding Service B JAXB Shared Lib v1 Java Serialization @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
RFC 761 @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Postel’s Law: “Be conservative in what you do, be liberal in what you expect“ @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
MusikShop Rekomender Consumer Driven Contracts @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
DATABASES! @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
DATA IS COOL @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
DATABASES ARE EVIL @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Rekomender MusikShop DB Schema @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Each service owns its own data MusikShop Rekomender Schema Schema DB Instance @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
MusikShop Rekomender RDMS RDMS Riak @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Release 2: Rekomender Read from Riak Release 1: Release 3: Dual Write Retire RDMS RDBMS Riak @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
MusikShop Dark Launching! Rekomender AceSuggest @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Decompose Your Systems Model Your Domain Get Interfaces Right Seperate Deployment From Release @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Questions? @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Thanks! @samnewman We’re hiring! @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12
Recommend
More recommend