51
Designing For Rapid Release Sam Newman Thursday, 17 May 12

Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

Designing For Rapid Release

Sam Newman

Thursday, 17 May 12

Page 2: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

We’re hiring...

Not Him

Thursday, 17 May 12

Page 3: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012Thursday, 17 May 12

Page 4: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

Thursday, 17 May 12

Page 5: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

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

Page 6: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

We’re hiring...

Thursday, 17 May 12

Page 7: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

Why is rapid release important?

Thursday, 17 May 12

Page 8: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

What criteria influence design?

Scaling

Durability

Performance

TechnologyGeographical

Compliance

Thursday, 17 May 12

Page 9: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

What about making it easy to release?

Thursday, 17 May 12

Page 10: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@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

Page 11: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

MusikShopv1

MusikShopv2

Thursday, 17 May 12

Page 12: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

v23 v9 v14v2v1

MusikShop

Thursday, 17 May 12

Page 13: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

The Same Change...

...resulting in very different deployments

Thursday, 17 May 12

Page 14: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@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

Page 15: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

Small, Incremental Releases FTW!

Thursday, 17 May 12

Page 16: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

So how do we design our systems to allow

for small changes?

Thursday, 17 May 12

Page 17: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

MusikShop

RekomendLib

Invoice Creation

String Utils

...

Small units - easier to reason about

Fast CI turnaround cycles

Thursday, 17 May 12

Page 18: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@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

Page 19: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

MusikShop v1

Rekomender v124

Rekomender v200

Thursday, 17 May 12

Page 20: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

MusikShop v1

Rekomender v124

Rekomender v200

Smoke Test

Showcase

Thursday, 17 May 12

Page 21: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012Thursday, 17 May 12

Page 22: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

What can stop blue/green deployments?

Thursday, 17 May 12

Page 23: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

MusikShop v1 MusikShop v2

Avoid stateful services

User

State

Thursday, 17 May 12

Page 24: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

Expensive Hardware!

Thursday, 17 May 12

Page 25: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@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

Page 26: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012Thursday, 17 May 12

Page 27: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@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

Page 28: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012Thursday, 17 May 12

Page 29: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

Things to watch for...

Thursday, 17 May 12

Page 30: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

The Trifle

Musik Web

Persistence

Thursday, 17 May 12

Page 31: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@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

Page 32: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

“A set of capabilities on an endpoint”

Thursday, 17 May 12

Page 33: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

Add to cart

Checkout

View Latest Releases

Search

Listen To Previews

Shopping Cart Catalog

Music Library

Thursday, 17 May 12

Page 34: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

Model Services Based On Your Business

Domain

Thursday, 17 May 12

Page 35: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@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

Page 36: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@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

Page 37: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@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

Page 38: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

RFC 761

Thursday, 17 May 12

Page 39: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

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

what you expect“

Thursday, 17 May 12

Page 40: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

MusikShop Rekomender

Consumer Driven Contracts

Thursday, 17 May 12

Page 41: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

DATABASES!

Thursday, 17 May 12

Page 42: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

DATA IS COOL

Thursday, 17 May 12

Page 43: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

DATABASES ARE EVIL

Thursday, 17 May 12

Page 44: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

RekomenderMusikShop

DB Schema

Thursday, 17 May 12

Page 45: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

RekomenderMusikShop

Schema Schema

DB Instance

Each service owns its own data

Thursday, 17 May 12

Page 46: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

RekomenderMusikShop

RDMS RDMSRiak

Thursday, 17 May 12

Page 47: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

Riak

Rekomender

RDBMS

Release 1: Dual Write

Release 2: Read from Riak

Release 3: Retire RDMS

Thursday, 17 May 12

Page 48: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

MusikShop

Rekomender AceSuggest

Dark Launching!

Thursday, 17 May 12

Page 49: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

Decompose Your Systems

Model Your Domain

Get Interfaces Right

Seperate Deployment From Release

Thursday, 17 May 12

Page 50: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

@samnewman#GeeCON, 2012

Questions?

Thursday, 17 May 12

Page 51: Designing For Rapid Release - Amazon S3 · 2012. 5. 25. · #GeeCON, 2012 @samnewman Manual Circuit Breaker MusikShop v1 Rekomender v124 Rekomender v200 Smoke Test Take That Queens

Thanks!Sam Newman - @samnewmansnewman@thoughtworks,com

Thursday, 17 May 12