How build and deploy shapes software architecture at thetrainline.com
-
Upload
matthew-skelton -
Category
Technology
-
view
2.784 -
download
3
description
Transcript of How build and deploy shapes software architecture at thetrainline.com
![Page 1: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/1.jpg)
#webperfdays@matthewpskelton
How build and deployment shapes software architecture
at thetrainline.com
Matthew Skelton | thetrainline.com
WebPerfDays EU, London | #webperfdays
05 October 2012
![Page 2: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/2.jpg)
#webperfdays@matthewpskelton
architecture
= f (build & deploy)(for some systems)
![Page 3: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/3.jpg)
#webperfdays@matthewpskelton
Systems engineering(robotics, control theory, sensors, neuroscience)
Software development
(finance, insurance, travel, pharma, media, medical imaging)
now
Build & Deployment at thetrainline.com
![Page 4: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/4.jpg)
#webperfdays@matthewpskelton
![Page 5: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/5.jpg)
#webperfdays@matthewpskelton
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
![Page 6: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/6.jpg)
#webperfdays@matthewpskelton
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
![Page 7: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/7.jpg)
#webperfdays@matthewpskelton
![Page 8: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/8.jpg)
#webperfdays@matthewpskelton
• Early “distributed agile” success story
• http://www.thoughtworks.com/trainline
![Page 9: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/9.jpg)
#webperfdays@matthewpskelton
10+ dev teams in 2 locations
![Page 10: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/10.jpg)
#webperfdays@matthewpskelton
#webperfdays@matthewpskelton
Server Farm (Build, Deployment, Replication)
100+ build agents20 dev environments x 20 VMs per
environment = 400 dev VMsGit replication (Gitolite), …
MORE SERVERS THAN PRODUCTION
![Page 11: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/11.jpg)
#webperfdays@matthewpskelton
![Page 12: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/12.jpg)
#webperfdays@matthewpskelton
![Page 13: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/13.jpg)
#webperfdays@matthewpskelton
architecture
= f (build & deploy)(for some systems)
![Page 14: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/14.jpg)
#webperfdays@matthewpskelton
“HERESY!”
#webperfdays@matthewpskelton
![Page 15: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/15.jpg)
#webperfdays@matthewpskelton
#webperfdays@matthewpskelton
![Page 16: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/16.jpg)
#webperfdays@matthewpskelton
#webperfdays@matthewpskelton
![Page 17: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/17.jpg)
#webperfdays@matthewpskelton
#webperfdays@matthewpskelton
![Page 18: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/18.jpg)
#webperfdays@matthewpskelton
Web-based
Frequently-changing
Public-facing
High-volume
![Page 19: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/19.jpg)
#webperfdays@matthewpskelton
![Page 20: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/20.jpg)
#webperfdays@matthewpskelton
RELIABLE
REPEATABLE
RAPID
RECURRING#webperfdays
@matthewpskelton
![Page 21: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/21.jpg)
#webperfdays@matthewpskelton
‘R-R-R-R’ BUILD AND DEPLOYMENT
Helps to avoid the Ball of Mud
Enables high-performance architectures
#webperfdays@matthewpskelton
![Page 22: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/22.jpg)
#webperfdays@matthewpskelton
#webperfdays@matthewpskelton
![Page 23: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/23.jpg)
#webperfdays@matthewpskelton
LOAD BALANCINGHIGH AVAILABILITY
SCALINGELASTIC
RAPID RECOVERY
#webperfdays@matthewpskelton
![Page 24: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/24.jpg)
#webperfdays@matthewpskelton
BUILDABLE
Small pipelined builds on generic build machines
Seconds, not minutes or hours
Short feedback cycles(Dan Worthington-Bodart, @danielbodart - http://bit.ly/M85wsX)
#webperfdays@matthewpskelton
![Page 25: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/25.jpg)
#webperfdays@matthewpskelton
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
![Page 26: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/26.jpg)
#webperfdays@matthewpskelton
TESTABLE
Test (separation, harnesses, points)
IDENTIFIABLE
Meaningful versions, packages, defined dependencies, artefact
management
(think component boundaries)
#webperfdays@matthewpskelton
![Page 27: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/27.jpg)
#webperfdays@matthewpskelton
Enforced “onion” testing layers(test separation, build machine firewalls, build agent types, …)
Semantic Versioning(A.B.C.D + contract to ‘clients’)
30+ external services(test harnesses)
![Page 28: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/28.jpg)
#webperfdays@matthewpskelton
DEPLOYABLERapid, scriptable, simple failure modes
MONITORABLELogging, metrics, transaction tracing
CONFIGURABLEInject settings – no ‘black boxes’
LIGHTWEIGHTKeep things small and easily comprehendible
#webperfdays@matthewpskelton
![Page 29: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/29.jpg)
#webperfdays@matthewpskelton
GO, MSDeploy, hand-rolled, Octopus, MSDeploy(“as simple as xcopy”)
Graphite + SqlToGraphite(https://github.com/perryofpeek/SqlToGraphite)
LogStash + log4net(tune logging levels with config, transaction tracing)
SCOM – operations manager(early monitoring in Dev)
![Page 30: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/30.jpg)
#webperfdays@matthewpskelton
INSTANTIABLE
No snowflakes or singletons
RECOVERABLE
No nasty zombies after failures
MTTR more important than MTBF** for most kinds of F
#webperfdays@matthewpskelton
![Page 31: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/31.jpg)
#webperfdays@matthewpskelton
Rebuild Build Agents with Chef
Chef for environment rebuilds
Call Start() and Stop() on each component
![Page 32: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/32.jpg)
#webperfdays@matthewpskelton
#webperfdays@matthewpskelton
![Page 33: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/33.jpg)
#webperfdays@matthewpskelton
Well-known monolithic business rules engine
Costly to build, deploy, configure, test
Being replaced
![Page 34: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/34.jpg)
#webperfdays@matthewpskelton
RELIABLE
REPEATABLE
RAPID
RECURRING#webperfdays
@matthewpskelton
![Page 35: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/35.jpg)
#webperfdays@matthewpskelton
LOAD BALANCINGHIGH AVAILABILITY
SCALINGELASTIC
RAPID RECOVERY
#webperfdays@matthewpskelton
LIGHTWEIGHTTESTABLEMONITORABLECONFIGURABLERECOVERABLEIDENTIFIABLE
![Page 36: How build and deploy shapes software architecture at thetrainline.com](https://reader033.fdocuments.us/reader033/viewer/2022060109/55534e76b4c90503618b51f6/html5/thumbnails/36.jpg)
#webperfdays@matthewpskelton
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