Refactoring for Continuous Delivery: Breaking the Mould

Preview:

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

Refactoring for Continuous Delivery

Breaking the Mould

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

Release More With Less

time

changeset size

time

changeset size

t transaction cost = time

Release More With Less

time

changeset size

t transaction cost = time v value-add = value

Release More With Less

time

changeset size

t transaction cost = time v value-add = value

h holding cost = v

Release More With Less

time

changeset size

t1 = 0.5t

t2 = 0.5t

Release More With Less

time

changeset size

t1 = 0.5tv1 = 0.8v

t2 = 0.5tv2 = 0.2v

Release More With Less

time

changeset size

t1 = 0.5tv1 = 0.8vh1 = v1

t2 = 0.5tv2 = 0.2vh2 = v2

Release More With Less

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

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]

Coupled Capabilities

Coupled Capabilities

Coupled Capabilities

Coupled Capabilities

Coupled Capabilities

Coupled Capabilities

Vertical Divide and Conquer

Vertical Divide and Conquer

Vertical Divide and Conquer

Vertical Divide and Conquer

Vertical Divide and Conquer

Interdependent Releases

Tolerant Reader

request

Tolerant Reader

request

Tolerant Reader

request

API Examples

request

API Examples

request

communicateEXAMPLE

Origin=CNPrice=£5

EXAMPLE

Origin=UGPrice=£4

EXAMPLE

Origin=CNPrice=£5

API Examples

EXAMPLE

Origin=UGPrice=£4

request

communicate

API Examples

request

communicateEXAMPLE

Origin=CNWeight=5oz

EXAMPLE

Origin=UGWeight=4oz

Consumer Driven Contracts

request

Consumer Driven Contracts

request

communicate

Consumer Driven Contracts

request

communicateimplement

Consumer Driven Contracts

request

communicate

communicateimplement

CONSUMER

Origin

Consumer Driven Contracts

request

implementcommunicate

implement

CONSUMER

Origin

Consumer Driven Contracts

request

implementcommunicate

CONSUMER

Origin

implement

request

Interdependent Releases

Interdependent Releases

request

implementcommunicate

CONSUMER

Origin

Refactoring for Continuous Delivery

Breaking the Mold

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

Recommended