0
How build and deploymentshapes software architecture    at thetrainline.com  Matthew Skelton | thetrainline.com AKQA Anora...
architecture= f (build & deploy)                (for some systems)                        #akqaanoraks                    ...
Systems engineering      (robotics, control theory, sensors, neuroscience)            Software          development(financ...
#akqaanoraks@matthewpskelton
9m visits per month to thetrainline.com     2nd most visited UK travel booking website                                 (be...
Booking engines for many UK train operators   Ticketing systems for Corporates and TMCs      Several hundred individual we...
#akqaanoraks@matthewpskelton
• Early “distributed agile” success story• http://www.thoughtworks.com/trainline                                          ...
10+ dev teams in 2 locations                                   #akqaanoraks                               @matthewpskelton
Server Farm (Build, Deployment, Replication)         100+ build agents20 dev environments x 20 VMs per   environment = 400...
#akqaanoraks@matthewpskelton
#akqaanoraks@matthewpskelton
architecture= f (build & deploy)                (for some systems)                        #akqaanoraks                    ...
“HERESY!”          #webperfdays           #akqaanoraks       @matthewpskelton
#webperfdays    #akqaanoraks@matthewpskelton
#webperfdays    #akqaanoraks@matthewpskelton
#webperfdays    #akqaanoraks@matthewpskelton
Web-basedFrequently- changingPublic-facingHigh-volume           #akqaanoraks       @matthewpskelton
#akqaanoraks@matthewpskelton
RELIABLEREPEATABLE  RAPIDRECURRING       #webperfdays                 #akqaanoraks             @matthewpskelton
‘R-R-R-R’BUILD AND DEPLOYMENTHelps to avoid the Ball of Mud Enables high-performance        architectures                 ...
#webperfdays    #akqaanoraks@matthewpskelton
LOAD BALANCINGHIGH AVAILABILITY    SCALING     ELASTIC RAPID RECOVERY                   #webperfdays                    #a...
BUILDABLESmall pipelined builds on generic build machines         Seconds, not minutes or hours              Short feedbac...
Build dependencies may mirror runtime deps   msbuild /m for multi-threaded builds            (forces component isolation)G...
TESTABLETest (separation, harnesses, points)         IDENTIFIABLE  Meaningful versions, packages,  defined dependencies, a...
Enforced “onion” testing layers(test separation, build machine firewalls, build agent types, …)                  Semantic ...
DEPLOYABLE   Rapid, scriptable, simple failure modes              MONITORABLE    Logging, metrics, transaction tracing    ...
GO, MSDeploy, hand-rolled, Octopus, PS remoting                     (“as simple as xcopy”)              Graphite + SqlToGr...
INSTANTIABLE   No snowflakes or singletons        RECOVERABLE No nasty zombies after failuresMTTR more important than MTBF...
Rebuild Build Agents with Chef  Chef for environment rebuildsCall Start() and Stop() on each           component          ...
#webperfdays    #akqaanoraks    #akqaanoraks@matthewpskelton@matthewpskelton
Well-known monolithic business rules engine   Costly to build, deploy, configure, test              Being replaced        ...
RELIABLEREPEATABLE  RAPIDRECURRING       #webperfdays                 #akqaanoraks             @matthewpskelton
LIGHTWEIGHT LOAD BALANCING                    TESTABLEHIGH AVAILABILITY                    MONITORABLE         SCALING    ...
London Continuous Delivery             Next meetup:         17 January 2013, with            Opscode (Chef)              #...
architecture= f (build & deploy)                                                                                          ...
Upcoming SlideShare
Loading in...5
×

How build and deploy affects architecture at thetrainline.com - akqa anoraks

1,027

Published on

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.
Talk given at AKQA Anoraks on 29 November 2012

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,027
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "How build and deploy affects architecture at thetrainline.com - akqa anoraks"

  1. 1. How build and deploymentshapes software architecture at thetrainline.com Matthew Skelton | thetrainline.com AKQA Anoraks, London | #akqaanoraks 29 November 2012 #akqaanoraks @matthewpskelton
  2. 2. architecture= f (build & deploy) (for some systems) #akqaanoraks @matthewpskelton
  3. 3. Systems engineering (robotics, control theory, sensors, neuroscience) Software development(finance, insurance, travel, pharma, media, medical imaging) nowBuild & Deploymentat thetrainline.com #akqaanoraks @matthewpskelton
  4. 4. #akqaanoraks@matthewpskelton
  5. 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 #akqaanoraks @matthewpskelton
  6. 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 #akqaanoraks @matthewpskelton
  7. 7. #akqaanoraks@matthewpskelton
  8. 8. • Early “distributed agile” success story• http://www.thoughtworks.com/trainline #akqaanoraks @matthewpskelton
  9. 9. 10+ dev teams in 2 locations #akqaanoraks @matthewpskelton
  10. 10. Server Farm (Build, Deployment, Replication) 100+ build agents20 dev environments x 20 VMs per environment = 400 dev VMs Git replication (Gitolite), …MORE SERVERS THAN PRODUCTION #akqaanoraks @matthewpskelton
  11. 11. #akqaanoraks@matthewpskelton
  12. 12. #akqaanoraks@matthewpskelton
  13. 13. architecture= f (build & deploy) (for some systems) #akqaanoraks @matthewpskelton
  14. 14. “HERESY!” #webperfdays #akqaanoraks @matthewpskelton
  15. 15. #webperfdays #akqaanoraks@matthewpskelton
  16. 16. #webperfdays #akqaanoraks@matthewpskelton
  17. 17. #webperfdays #akqaanoraks@matthewpskelton
  18. 18. Web-basedFrequently- changingPublic-facingHigh-volume #akqaanoraks @matthewpskelton
  19. 19. #akqaanoraks@matthewpskelton
  20. 20. RELIABLEREPEATABLE RAPIDRECURRING #webperfdays #akqaanoraks @matthewpskelton
  21. 21. ‘R-R-R-R’BUILD AND DEPLOYMENTHelps to avoid the Ball of Mud Enables high-performance architectures #webperfdays #akqaanoraks @matthewpskelton
  22. 22. #webperfdays #akqaanoraks@matthewpskelton
  23. 23. LOAD BALANCINGHIGH AVAILABILITY SCALING ELASTIC RAPID RECOVERY #webperfdays #akqaanoraks @matthewpskelton
  24. 24. BUILDABLESmall pipelined builds on generic build machines Seconds, not minutes or hours Short feedback cycles #webperfdays #akqaanoraks #akqaanoraks (Dan Worthington-Bodart, @danielbodart - http://bit.ly/M85wsX) @matthewpskelton @matthewpskelton
  25. 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 #akqaanoraks @matthewpskelton
  26. 26. TESTABLETest (separation, harnesses, points) IDENTIFIABLE Meaningful versions, packages, defined dependencies, artefact management (think component boundaries) #webperfdays #akqaanoraks @matthewpskelton
  27. 27. 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) #akqaanoraks @matthewpskelton
  28. 28. DEPLOYABLE Rapid, scriptable, simple failure modes MONITORABLE Logging, metrics, transaction tracing CONFIGURABLE Inject settings – no ‘black boxes’ LIGHTWEIGHTKeep things small and easily comprehendible #webperfdays #akqaanoraks @matthewpskelton
  29. 29. GO, MSDeploy, hand-rolled, Octopus, PS remoting (“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) #akqaanoraks @matthewpskelton
  30. 30. INSTANTIABLE No snowflakes or singletons RECOVERABLE No nasty zombies after failuresMTTR more important than MTBF* * for most kinds of F #webperfdays #akqaanoraks @matthewpskelton
  31. 31. Rebuild Build Agents with Chef Chef for environment rebuildsCall Start() and Stop() on each component #akqaanoraks @matthewpskelton
  32. 32. #webperfdays #akqaanoraks #akqaanoraks@matthewpskelton@matthewpskelton
  33. 33. Well-known monolithic business rules engine Costly to build, deploy, configure, test Being replaced #akqaanoraks @matthewpskelton
  34. 34. RELIABLEREPEATABLE RAPIDRECURRING #webperfdays #akqaanoraks @matthewpskelton
  35. 35. LIGHTWEIGHT LOAD BALANCING TESTABLEHIGH AVAILABILITY MONITORABLE SCALING CONFIGURABLE ELASTIC RECOVERABLE RAPID RECOVERY IDENTIFIABLE #webperfdays #akqaanoraks @matthewpskelton
  36. 36. London Continuous Delivery Next meetup: 17 January 2013, with Opscode (Chef) #londoncd #akqaanoraks @matthewpskelton
  37. 37. architecture= f (build & deploy) (for some systems) thank you @AKQAAnoraks Blog: http://engineering.thetrainline.com/ 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 #akqaanoraks @matthewpskelton
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×