1

How build and deployment should shape software architectures

Embed Size (px)

DESCRIPTION

Build and deployment concerns can help us to avoid some architecture anti-patterns, and enable some useful system properties. Presented at IASA UK Ignite 2 on 10 September 2012 in London.

Citation preview

Page 1: How build and deployment should shape software architectures

How build and deployment should shape software

architectures

Matthew Skelton CEng | thetrainline.com

IASA UK Ignite 2, London | #iasaignite

10 September 2012

Page 2: How build and deployment should shape software architectures

Systems engineering(robotics, control theory, sensors, neuroscience)

Software development

(finance, insurance, travel, pharma, media, medical imaging)

now

Build & Deployment at thetrainline.com

@matthewpskelton

Page 3: How build and deployment should shape software architectures

architecture

= f (build & deploy)(for some systems)

Page 4: How build and deployment should shape software architectures

“HERESY!”

Page 5: How build and deployment should shape software architectures
Page 6: How build and deployment should shape software architectures
Page 7: How build and deployment should shape software architectures
Page 8: How build and deployment should shape software architectures

RELIABLE

REPEATABLE

RAPID

RECURRING

Page 9: How build and deployment should shape software architectures

Web-based

Frequently-changing

Public-facing

High-volume

Page 10: How build and deployment should shape software architectures

‘R-R-R-R’ BUILD AND DEPLOYMENT

Helps to avoid the Ball of Mud

Page 11: How build and deployment should shape software architectures
Page 12: How build and deployment should shape software architectures

BUILDABLE

Small pipelined builds on generic build machines

Seconds, not minutes or hours

Short feedback cycles(Dan Worthington-Bodart, @danielbodart - http://bit.ly/M85wsX)

Page 13: How build and deployment should shape software architectures

TESTABLE

Test (separation, harnesses, points)

IDENTIFIABLE

Meaningful versions, packages, defined dependencies, artefact

management

(think component boundaries)

Page 14: How build and deployment should shape software architectures

DEPLOYABLERapid, scriptable, simple failure modes

MONITORABLELogging, metrics, transaction tracing

CONFIGURABLEInject settings – no ‘black boxes’

LIGHTWEIGHTKeep things small and easily comprehendible

Page 15: How build and deployment should shape software architectures

INSTANTIABLE

No snowflakes or singletons

RECOVERABLE

No nasty zombies after failures

MTTR more important than MTBF** for most kinds of F

Page 16: How build and deployment should shape software architectures
Page 17: How build and deployment should shape software architectures

RELIABLE

REPEATABLE

RAPID

RECURRING

Page 18: How build and deployment should shape software architectures

Lightweight, Testable, Monitorable, Configurable,

Recoverable, Identifiablecomponent architecture

Page 19: How build and deployment should shape software architectures

LOAD BALANCINGHIGH AVAILABILITY

SCALINGELASTIC ARCHITECTURES

RAPID RECOVERY

Page 20: How build and deployment should shape software architectures

architecture

= f (build & deploy)(for some systems)

thank you

IASA: www.iasaglobal.org

matthewskelton.net | @matthewpskelton

Thanks to: Attila S, Jack R and Owain P for feedback.

Picture credits: Petra: Wikimedia/Berthold Werner; army engineers: US DoD; ball of mud: pwern.blogspot.co.uk; sports car: xarj.net; zombie: bjj.org; feather:

Wikipedia; punch: thelegalblitz.com; passport: coverpalace.com; dogs: reluctantmemsahib.wordpress.com; Meccano: dalefield.com