DESIGNING FOR RAPID RELEASE Sam Newman ThoughtWorks Tuesday, 2 - - PowerPoint PPT Presentation

designing for rapid release
SMART_READER_LITE
LIVE PREVIEW

DESIGNING FOR RAPID RELEASE Sam Newman ThoughtWorks Tuesday, 2 - - PowerPoint PPT Presentation

DESIGNING FOR RAPID RELEASE Sam Newman ThoughtWorks Tuesday, 2 October 12 Not Him Were hiring... @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12 @samnewman GOTO: Aarhus 2012 Tuesday, 2 October 12 Tuesday, 2 October 12 Were


slide-1
SLIDE 1

DESIGNING FOR RAPID RELEASE

Sam Newman ThoughtWorks

Tuesday, 2 October 12
slide-2
SLIDE 2

@samnewman GOTO: Aarhus 2012

We’re hiring...

Not Him

Tuesday, 2 October 12
slide-3
SLIDE 3

@samnewman GOTO: Aarhus 2012

Tuesday, 2 October 12
slide-4
SLIDE 4 Tuesday, 2 October 12
slide-5
SLIDE 5

@samnewman GOTO: Aarhus 2012

We’re hiring...

Tuesday, 2 October 12
slide-6
SLIDE 6

@samnewman GOTO: Aarhus 2012

Why is rapid release important?

Tuesday, 2 October 12
slide-7
SLIDE 7

@samnewman GOTO: Aarhus 2012

What criteria influence design?

Scaling Durability Performance Technology Geographical Compliance

Tuesday, 2 October 12
slide-8
SLIDE 8

@samnewman GOTO: Aarhus 2012

What about making it easy to release?

Tuesday, 2 October 12
slide-9
SLIDE 9

@samnewman GOTO: Aarhus 2012

Make it quick to make a change Make it quick to deploy the change Reduce the risk of releasing

Tuesday, 2 October 12
slide-10
SLIDE 10

@samnewman GOTO: Aarhus 2012

MusikShop v1 MusikShop v2

Tuesday, 2 October 12
slide-11
SLIDE 11

@samnewman GOTO: Aarhus 2012

v23 v9 v14 v2 v1 MusikShop

Tuesday, 2 October 12
slide-12
SLIDE 12

@samnewman GOTO: Aarhus 2012 The Same Change... ...resulting in very different deployments

Tuesday, 2 October 12
slide-13
SLIDE 13

@samnewman GOTO: 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

Tuesday, 2 October 12
slide-14
SLIDE 14

@samnewman GOTO: Aarhus 2012

Small, Incremental Releases FTW!

Tuesday, 2 October 12
slide-15
SLIDE 15

@samnewman GOTO: Aarhus 2012

So how do we design

  • ur systems to allow

for small changes?

Tuesday, 2 October 12
slide-16
SLIDE 16

@samnewman GOTO: Aarhus 2012

MusikShop Rekomend Lib Invoice Creation String Utils ... Small units - easier to reason about Fast CI turnaround cycles

Tuesday, 2 October 12
slide-17
SLIDE 17

@samnewman GOTO: Aarhus 2012

MusikShop v1 Rekomend Lib v134

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

MusikShop v2 Rekomend Lib v200

Tuesday, 2 October 12
slide-18
SLIDE 18

@samnewman GOTO: Aarhus 2012

MusikShop v1

Rekomender v124 Rekomender v200

Tuesday, 2 October 12
slide-19
SLIDE 19

@samnewman GOTO: Aarhus 2012

MusikShop v1

Rekomender v124 Rekomender v200

Smoke Test Showcase

Blue/Green Deployments

Tuesday, 2 October 12
slide-20
SLIDE 20

@samnewman GOTO: Aarhus 2012

Tuesday, 2 October 12
slide-21
SLIDE 21

@samnewman GOTO: Aarhus 2012

What can stop blue/ green deployments?

Tuesday, 2 October 12
slide-22
SLIDE 22

@samnewman GOTO: Aarhus 2012

MusikShop v1 MusikShop v2

Avoid stateful services User

State

Tuesday, 2 October 12
slide-23
SLIDE 23

@samnewman GOTO: Aarhus 2012

Expensive Hardware!

Tuesday, 2 October 12
slide-24
SLIDE 24

@samnewman GOTO: 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!

Tuesday, 2 October 12
slide-25
SLIDE 25

@samnewman GOTO: Aarhus 2012

Tuesday, 2 October 12
slide-26
SLIDE 26

@samnewman GOTO: Aarhus 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...

Tuesday, 2 October 12
slide-27
SLIDE 27

@samnewman GOTO: Aarhus 2012

Tuesday, 2 October 12
slide-28
SLIDE 28

@samnewman GOTO: Aarhus 2012

Things to watch for...

Tuesday, 2 October 12
slide-29
SLIDE 29

@samnewman GOTO: Aarhus 2012

The Trifle

Musik Web Persistence

Tuesday, 2 October 12
slide-30
SLIDE 30

@samnewman GOTO: Aarhus 2012

Tuesday, 2 October 12
slide-31
SLIDE 31

@samnewman GOTO: Aarhus 2012

Tuesday, 2 October 12
slide-32
SLIDE 32

@samnewman GOTO: Aarhus 2012

Tuesday, 2 October 12
slide-33
SLIDE 33

@samnewman GOTO: Aarhus 2012

The Spider

CD Ordering System Whitemail System Data Wharehouse 3rd Party Supplier Finance System Dumb System 4 Dumb System 1 Dumb System 2 Dumb System 3

Tuesday, 2 October 12
slide-34
SLIDE 34

@samnewman GOTO: Aarhus 2012

“A set of capabilities on an endpoint”

Tuesday, 2 October 12
slide-35
SLIDE 35

@samnewman GOTO: Aarhus 2012

Add to cart Checkout View Latest Releases Search Listen To Previews

Shopping Cart Catalog Music Library

Tuesday, 2 October 12
slide-36
SLIDE 36

@samnewman GOTO: Aarhus 2012

Model Services Based On Your Business Domain

Tuesday, 2 October 12
slide-37
SLIDE 37

@samnewman GOTO: Aarhus 2012 Musik Shop v1

Reko. v9 Reko. v10

Musik Shop v1 Musik Shop v2

Reko. v10 Internal Change Expansion Interface Change Reko. v10

Musik Shop v1

Tuesday, 2 October 12
slide-38
SLIDE 38

@samnewman GOTO: Aarhus 2012 Rekomender V9 v1

Musik Shop

v2

iOS App Consider maintaining multiple service endpoints Non-breaking expansion is to be preferred - but if you can’t...

Tuesday, 2 October 12
slide-39
SLIDE 39

@samnewman GOTO: Aarhus 2012

Service B Service A Shared Lib v1 Shared Lib v1 Shared Lib v2

Beware of shared serialization protocols WSDL-binding JAXB Java Serialization

Tuesday, 2 October 12
slide-40
SLIDE 40

@samnewman GOTO: Aarhus 2012

RFC 761

Tuesday, 2 October 12
slide-41
SLIDE 41

@samnewman GOTO: Aarhus 2012

Postel’s Law:

“Be conservative in what you do, be liberal in what you expect“

Tuesday, 2 October 12
slide-42
SLIDE 42

@samnewman GOTO: Aarhus 2012

MusikShop

Rekomender

Consumer Driven Contracts

Tuesday, 2 October 12
slide-43
SLIDE 43

@samnewman GOTO: Aarhus 2012

DATABASES!

Tuesday, 2 October 12
slide-44
SLIDE 44

@samnewman GOTO: Aarhus 2012

DATA IS COOL

Tuesday, 2 October 12
slide-45
SLIDE 45

@samnewman GOTO: Aarhus 2012

DATABASES ARE EVIL

Tuesday, 2 October 12
slide-46
SLIDE 46

@samnewman GOTO: Aarhus 2012

Rekomender MusikShop

DB Schema

Tuesday, 2 October 12
slide-47
SLIDE 47

@samnewman GOTO: Aarhus 2012

Rekomender MusikShop

Schema Schema

DB Instance Each service owns its own data

Tuesday, 2 October 12
slide-48
SLIDE 48

@samnewman GOTO: Aarhus 2012

Rekomender MusikShop

RDMS RDMS Riak

Tuesday, 2 October 12
slide-49
SLIDE 49

@samnewman GOTO: Aarhus 2012

Riak

Rekomender

RDBMS

Release 1: Dual Write Release 2: Read from Riak Release 3: Retire RDMS

Tuesday, 2 October 12
slide-50
SLIDE 50

@samnewman GOTO: Aarhus 2012

MusikShop

Rekomender AceSuggest

Dark Launching!

Tuesday, 2 October 12
slide-51
SLIDE 51

@samnewman GOTO: Aarhus 2012

Decompose Your Systems Model Your Domain Get Interfaces Right Seperate Deployment From Release

Tuesday, 2 October 12
slide-52
SLIDE 52

@samnewman GOTO: Aarhus 2012

Questions?

Tuesday, 2 October 12
slide-53
SLIDE 53

@samnewman GOTO: Aarhus 2012

Thanks!

@samnewman

We’re hiring!

Tuesday, 2 October 12