44
Refactoring for Continuous Delivery Breaking the Mould Steve Smith - @agilestevesmith www.stephen-smith.co.uk

Refactoring for Continuous Delivery: Breaking the Mould

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: Refactoring for Continuous Delivery: Breaking the Mould

Refactoring for Continuous Delivery

Breaking the Mould

Steve Smith - @agilestevesmithwww.stephen-smith.co.uk

Page 2: Refactoring for Continuous Delivery: Breaking the Mould

Release More With Less

time

changeset size

Page 3: Refactoring for Continuous Delivery: Breaking the Mould

time

changeset size

t transaction cost = time

Release More With Less

Page 4: Refactoring for Continuous Delivery: Breaking the Mould

time

changeset size

t transaction cost = time v value-add = value

Release More With Less

Page 5: Refactoring for Continuous Delivery: Breaking the Mould

time

changeset size

t transaction cost = time v value-add = value

h holding cost = v

Release More With Less

Page 6: Refactoring for Continuous Delivery: Breaking the Mould

time

changeset size

t1 = 0.5t

t2 = 0.5t

Release More With Less

Page 7: Refactoring for Continuous Delivery: Breaking the Mould

time

changeset size

t1 = 0.5tv1 = 0.8v

t2 = 0.5tv2 = 0.2v

Release More With Less

Page 8: Refactoring for Continuous Delivery: Breaking the Mould

time

changeset size

t1 = 0.5tv1 = 0.8vh1 = v1

t2 = 0.5tv2 = 0.2vh2 = v2

Release More With Less

Page 9: Refactoring for Continuous Delivery: Breaking the Mould

t1 = 1/3 t t2 = 2/3 t

time

changeset size

t1 = 0.25tv1 = 0.1v h1 = v1

t2 = 0.25tv2 = 0.7v h2 = v2

t3 = 0.25tv3 = 0.1v h3 = v3

t4 = 0.25tv4 = 0.1v h4 = v4

Release More With Less

Page 10: Refactoring for Continuous Delivery: Breaking the Mould

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]

Page 11: Refactoring for Continuous Delivery: Breaking the Mould

Coupled Capabilities

Page 12: Refactoring for Continuous Delivery: Breaking the Mould

Coupled Capabilities

Page 13: Refactoring for Continuous Delivery: Breaking the Mould

Coupled Capabilities

Page 14: Refactoring for Continuous Delivery: Breaking the Mould

Coupled Capabilities

Page 15: Refactoring for Continuous Delivery: Breaking the Mould

Coupled Capabilities

Page 16: Refactoring for Continuous Delivery: Breaking the Mould

Coupled Capabilities

Page 17: Refactoring for Continuous Delivery: Breaking the Mould

Vertical Divide and Conquer

Page 18: Refactoring for Continuous Delivery: Breaking the Mould

Vertical Divide and Conquer

Page 19: Refactoring for Continuous Delivery: Breaking the Mould

Vertical Divide and Conquer

Page 20: Refactoring for Continuous Delivery: Breaking the Mould

Vertical Divide and Conquer

Page 21: Refactoring for Continuous Delivery: Breaking the Mould

Vertical Divide and Conquer

Page 22: Refactoring for Continuous Delivery: Breaking the Mould
Page 23: Refactoring for Continuous Delivery: Breaking the Mould
Page 24: Refactoring for Continuous Delivery: Breaking the Mould
Page 25: Refactoring for Continuous Delivery: Breaking the Mould
Page 26: Refactoring for Continuous Delivery: Breaking the Mould
Page 27: Refactoring for Continuous Delivery: Breaking the Mould
Page 28: Refactoring for Continuous Delivery: Breaking the Mould

Interdependent Releases

Page 29: Refactoring for Continuous Delivery: Breaking the Mould

Tolerant Reader

request

Page 30: Refactoring for Continuous Delivery: Breaking the Mould

Tolerant Reader

request

Page 31: Refactoring for Continuous Delivery: Breaking the Mould

Tolerant Reader

request

Page 32: Refactoring for Continuous Delivery: Breaking the Mould

API Examples

request

Page 33: Refactoring for Continuous Delivery: Breaking the Mould

API Examples

request

communicateEXAMPLE

Origin=CNPrice=£5

EXAMPLE

Origin=UGPrice=£4

Page 34: Refactoring for Continuous Delivery: Breaking the Mould

EXAMPLE

Origin=CNPrice=£5

API Examples

EXAMPLE

Origin=UGPrice=£4

request

communicate

Page 35: Refactoring for Continuous Delivery: Breaking the Mould

API Examples

request

communicateEXAMPLE

Origin=CNWeight=5oz

EXAMPLE

Origin=UGWeight=4oz

Page 36: Refactoring for Continuous Delivery: Breaking the Mould

Consumer Driven Contracts

request

Page 37: Refactoring for Continuous Delivery: Breaking the Mould

Consumer Driven Contracts

request

communicate

Page 38: Refactoring for Continuous Delivery: Breaking the Mould

Consumer Driven Contracts

request

communicateimplement

Page 39: Refactoring for Continuous Delivery: Breaking the Mould

Consumer Driven Contracts

request

communicate

communicateimplement

CONSUMER

Origin

Page 40: Refactoring for Continuous Delivery: Breaking the Mould

Consumer Driven Contracts

request

implementcommunicate

implement

CONSUMER

Origin

Page 41: Refactoring for Continuous Delivery: Breaking the Mould

Consumer Driven Contracts

request

implementcommunicate

CONSUMER

Origin

implement

Page 42: Refactoring for Continuous Delivery: Breaking the Mould

request

Interdependent Releases

Page 43: Refactoring for Continuous Delivery: Breaking the Mould

Interdependent Releases

request

implementcommunicate

CONSUMER

Origin

Page 44: Refactoring for Continuous Delivery: Breaking the Mould

Refactoring for Continuous Delivery

Breaking the Mold

Steve Smith - @agilestevesmithwww.stephen-smith.co.uk