By ensuing our software builds and deployments are Reliable, Repeatable, Rapid and Recurring, we can produce software which is lightweight, testable, monitorable, configurable and recoverable. These properties enable features such as load-balancing, scaling, elasticity and rapid recovery, all key for high-performing web systems. R-R-R-R builds and deployments also enable Continuous Delivery of features into Production.
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
How build and deploy shapes software architecture at thetrainline.com
1. How build and deployment
shapes software architecture
at thetrainline.com
Matthew Skelton | thetrainline.com
WebPerfDays EU, London | #webperfdays
05 October 2012
#webperfdays
@matthewpskelton
3. Systems engineering
(robotics, control theory, sensors, neuroscience)
Software
development
(finance, insurance, travel, pharma, media, medical imaging)
now
Build & Deployment
at thetrainline.com
#webperfdays
@matthewpskelton
5. 9m visits per month to thetrainline.com
2nd most visited UK travel booking website
(behind Easyjet)*
Over 100,000 daily visits via our mobile apps
*source: IMRG hotshops list Nov 2011
#webperfdays
@matthewpskelton
6. Booking engines for many UK train operators
Ticketing systems for Corporates and TMCs
Several hundred individual websites
> £1bn ($1.5bn USD) per year in train ticket sales
#webperfdays
@matthewpskelton
8. • Early “distributed agile” success story
• http://www.thoughtworks.com/trainline
#webperfdays
@matthewpskelton
9. 10+ dev teams in 2 locations
#webperfdays
@matthewpskelton
10. Server Farm
(Build, Deployment, Replication)
100+ build agents
20 dev environments x 20 VMs per
environment = 400 dev VMs
Git replication (Gitolite), …
MORE SERVERS THAN PRODUCTION
#webperfdays
@matthewpskelton
24. BUILDABLE
Small pipelined builds on generic build machines
Seconds, not minutes or hours
Short feedback cycles #webperfdays
(Dan Worthington-Bodart, @danielbodart - http://bit.ly/M85wsX) @matthewpskelton
25. Build dependencies may mirror runtime deps
msbuild /m for multi-threaded builds
(forces component isolation)
Gallio (MbUnit) – replacement engine for NUnit
NuGet + Squid for super-fast build artefacts
RAM disk for some working copy operations
#webperfdays
@matthewpskelton
26. TESTABLE
Test (separation, harnesses, points)
IDENTIFIABLE
Meaningful versions, packages,
defined dependencies, artefact
management
(think component boundaries)
#webperfdays
@matthewpskelton
30. INSTANTIABLE
No snowflakes or singletons
RECOVERABLE
No nasty zombies after failures
MTTR more important than MTBF*
* for most kinds of F
#webperfdays
@matthewpskelton
31. Rebuild Build Agents with Chef
Chef for environment rebuilds
Call Start() and Stop() on each
component
#webperfdays
@matthewpskelton
36. architecture
= f (build & deploy)
(for some systems)
thank you
webperfdays.org
matthewskelton.net | @matthewpskelton
Thanks to: Attila S, Jack R and Owain P for feedback.
Picture credits:
Label: seanlabel.com; Sheep: gallery.hd.org; Train: worldontrains.blogspot.co.uk; Gurner: mog.com; 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 #webperfdays
@matthewpskelton