Refactoring For Continuous Delivery - Breaking The Mould

622051376c3b381ef1c786036011112d?s=47 Steve Smith
February 27, 2014

Refactoring For Continuous Delivery - Breaking The Mould

Continuous Delivery asks that we optimise lead times in order to grow product revenues, but all too often the cost of the technical change outweighs the value of the business change. How can we break the mold of tightly-coupled software architectures and risk management theatre?

In this talk Steve Smith will discuss how software architecture is often an impediment to Continuous Delivery, and outline some design patterns - Tolerant Reader, API Examples, Consumer Driven Contracts - that form a low cost risk reduction strategy.

622051376c3b381ef1c786036011112d?s=128

Steve Smith

February 27, 2014
Tweet

Transcript

  1. Refactoring for Continuous Delivery Breaking the Mould Steve Smith -

    @agilestevesmith www.stephen-smith.co.uk
  2. Release More With Less time change set size

  3. time change set size t transaction cost = time Release

    More With Less
  4. time change set size t transaction cost = time v

    value-add = value Release More With Less
  5. time change set size t transaction cost = time v

    value-add = value h holding cost = v Release More With Less
  6. time change set size t1 = 0.5t t2 = 0.5t

    Release More With Less
  7. time change set size t1 = 0.5t v1 = 0.8v

    t2 = 0.5t v2 = 0.2v Release More With Less
  8. time change set size t1 = 0.5t v1 = 0.8v

    h1 = v1 t2 = 0.5t v2 = 0.2v h2 = v2 Release More With Less
  9. t1 = 1/3 t t2 = 2/3 t time change

    set size t1 = 0.25t v1 = 0.1v h1 = v1 t2 = 0.25t v2 = 0.7v h2 = v2 t3 = 0.25t v3 = 0.1v h3 = v3 t4 = 0.25t v4 = 0.1v h4 = v4 Release More With Less
  10. Effective Architecture “Architecture represents the significant design decisions that shape

    a system, where significant is measured by cost of change” [Booch] “An effective architecture is one that generally reduces the significance of design decisions” [Henney]
  11. Coupled Capabilities

  12. Coupled Capabilities

  13. Coupled Capabilities

  14. Coupled Capabilities

  15. Coupled Capabilities

  16. Coupled Capabilities

  17. Vertical Divide and Conquer

  18. Vertical Divide and Conquer

  19. Vertical Divide and Conquer

  20. Vertical Divide and Conquer

  21. Vertical Divide and Conquer

  22. None
  23. None
  24. None
  25. None
  26. None
  27. None
  28. Interdependent Releases

  29. Tolerant Reader request

  30. Tolerant Reader request

  31. Tolerant Reader request

  32. API Examples request

  33. API Examples request communicate EXAMPLE Origin=CN Price=£5 EXAMPLE Origin=UG Price=£4

  34. EXAMPLE Origin=CN Price=£5 API Examples EXAMPLE Origin=UG Price=£4 request communicate

  35. API Examples request communicate EXAMPLE Origin=CN Weight=5oz EXAMPLE Origin=UG Weight=4oz

  36. Consumer Driven Contracts request

  37. Consumer Driven Contracts request communicate

  38. Consumer Driven Contracts request communicate implement

  39. Consumer Driven Contracts request communicate communicate implement CONSUMER Origin

  40. Consumer Driven Contracts request implement communicate implement CONSUMER Origin

  41. Consumer Driven Contracts request implement communicate CONSUMER Origin implement

  42. request Interdependent Releases

  43. Interdependent Releases request implement communicate CONSUMER Origin

  44. Refactoring for Continuous Delivery Breaking the Mold Steve Smith -

    @agilestevesmith www.stephen-smith.co.uk