DESIGNING FOR RAPID RELEASE - GOTO Blog – GOTO ... GOTO: Aarhus 2012 @samnewman...

download DESIGNING FOR RAPID RELEASE - GOTO Blog – GOTO ... GOTO: Aarhus 2012 @samnewman Manual Circuit

of 53

  • date post

    21-Jun-2018
  • Category

    Documents

  • view

    213
  • download

    0

Embed Size (px)

Transcript of DESIGNING FOR RAPID RELEASE - GOTO Blog – GOTO ... GOTO: Aarhus 2012 @samnewman...

  • DESIGNING FOR RAPID RELEASESam NewmanThoughtWorks

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    Were hiring...

    Not Him

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012Tuesday, 2 October 12

  • Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    Were hiring...

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    Why is rapid release important?

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    What criteria influence design?

    Scaling

    Durability

    Performance

    TechnologyGeographical

    Compliance

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    What about making it easy to release?

    Tuesday, 2 October 12

  • @samnewmanGOTO: 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

  • @samnewmanGOTO: Aarhus 2012

    MusikShopv1

    MusikShopv2

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    v23 v9 v14v2v1

    MusikShop

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    The Same Change...

    ...resulting in very different deployments

    Tuesday, 2 October 12

  • @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

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    Small, Incremental Releases FTW!

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    So how do we design our systems to allow

    for small changes?

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    MusikShop

    RekomendLib

    Invoice Creation

    String Utils

    ...

    Small units - easier to reason about

    Fast CI turnaround cycles

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    MusikShop v1

    RekomendLib v134

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

    MusikShop v2

    RekomendLib v200

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    MusikShop v1

    Rekomender v124

    Rekomender v200

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    MusikShop v1

    Rekomender v124

    Rekomender v200

    Smoke Test

    Showcase

    Blue/Green Deployments

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    What can stop blue/green deployments?

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    MusikShop v1 MusikShop v2

    Avoid stateful services

    User

    State

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    Expensive Hardware!

    Tuesday, 2 October 12

  • @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 Cant Rekomend Right Now!

    Tuesday, 2 October 12

    http://www.MusikShophttp://www.MusikShop

  • @samnewmanGOTO: Aarhus 2012Tuesday, 2 October 12

  • @samnewmanGOTO: 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

    http://www.MusikShophttp://www.MusikShop

  • @samnewmanGOTO: Aarhus 2012Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    Things to watch for...

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    The Trifle

    Musik Web

    Persistence

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012Tuesday, 2 October 12

  • @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

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    A set of capabilities on an endpoint

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    Add to cart

    Checkout

    View Latest Releases

    Search

    Listen To Previews

    Shopping Cart Catalog

    Music Library

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    Model Services Based On Your Business

    Domain

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    MusikShop

    v1

    Reko.v9

    Reko.v10

    MusikShop

    v1

    MusikShop

    v2

    Reko.v10

    InternalChange Expansion

    InterfaceChange

    Reko.v10

    MusikShop

    v1

    Tuesday, 2 October 12

  • @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 cant...

    Tuesday, 2 October 12

  • @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

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    RFC 761

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    Postels Law:Be conservative in what you do, be liberal in

    what you expect

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    MusikShop Rekomender

    Consumer Driven Contracts

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    DATABASES!

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    DATA IS COOL

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    DATABASES ARE EVIL

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    RekomenderMusikShop

    DB Schema

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    RekomenderMusikShop

    Schema Schema

    DB Instance

    Each service owns its own data

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    RekomenderMusikShop

    RDMS RDMSRiak

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    Riak

    Rekomender

    RDBMS

    Release 1: Dual Write

    Release 2: Read from Riak

    Release 3: Retire RDMS

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    MusikShop

    Rekomender AceSuggest

    Dark Launching!

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    Decompose Your Systems

    Model Your Domain

    Get Interfaces Right

    Seperate Deployment From Release

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    Questions?

    Tuesday, 2 October 12

  • @samnewmanGOTO: Aarhus 2012

    Thanks!

    @samnewman

    Were hiring!

    Tuesday, 2 October 12