How build and deploy shapes software architecture at thetrainline.com

4,033 views
4,252 views

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.

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

No Downloads
Views
Total views
4,033
On SlideShare
0
From Embeds
0
Number of Embeds
2,533
Actions
Shares
0
Downloads
11
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

How build and deploy shapes software architecture at thetrainline.com

  1. 1. How build and deploymentshapes software architecture at thetrainline.com Matthew Skelton | thetrainline.comWebPerfDays EU, London | #webperfdays 05 October 2012 #webperfdays @matthewpskelton
  2. 2. architecture= f (build & deploy) (for some systems) #webperfdays @matthewpskelton
  3. 3. Systems engineering (robotics, control theory, sensors, neuroscience) Software development(finance, insurance, travel, pharma, media, medical imaging) nowBuild & Deploymentat thetrainline.com #webperfdays @matthewpskelton
  4. 4. #webperfdays@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 #webperfdays @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 #webperfdays @matthewpskelton
  7. 7. #webperfdays@matthewpskelton
  8. 8. • Early “distributed agile” success story• http://www.thoughtworks.com/trainline #webperfdays @matthewpskelton
  9. 9. 10+ dev teams in 2 locations #webperfdays @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 #webperfdays @matthewpskelton
  11. 11. #webperfdays@matthewpskelton
  12. 12. #webperfdays@matthewpskelton
  13. 13. architecture= f (build & deploy) (for some systems) #webperfdays @matthewpskelton
  14. 14. “HERESY!” #webperfdays @matthewpskelton
  15. 15. #webperfdays@matthewpskelton
  16. 16. #webperfdays@matthewpskelton
  17. 17. #webperfdays@matthewpskelton
  18. 18. Web-basedFrequently- changingPublic-facingHigh-volume #webperfdays @matthewpskelton
  19. 19. #webperfdays@matthewpskelton
  20. 20. RELIABLEREPEATABLE RAPIDRECURRING #webperfdays @matthewpskelton
  21. 21. ‘R-R-R-R’BUILD AND DEPLOYMENTHelps to avoid the Ball of Mud Enables high-performance architectures #webperfdays @matthewpskelton
  22. 22. #webperfdays@matthewpskelton
  23. 23. LOAD BALANCINGHIGH AVAILABILITY SCALING ELASTIC RAPID RECOVERY #webperfdays @matthewpskelton
  24. 24. BUILDABLESmall 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. 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. 26. TESTABLETest (separation, harnesses, points) IDENTIFIABLE Meaningful versions, packages, defined dependencies, artefact management (think component boundaries) #webperfdays @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) #webperfdays @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 @matthewpskelton
  29. 29. 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) #webperfdays @matthewpskelton
  30. 30. INSTANTIABLE No snowflakes or singletons RECOVERABLE No nasty zombies after failuresMTTR more important than MTBF* * for most kinds of F #webperfdays @matthewpskelton
  31. 31. Rebuild Build Agents with Chef Chef for environment rebuildsCall Start() and Stop() on each component #webperfdays @matthewpskelton
  32. 32. #webperfdays@matthewpskelton
  33. 33. Well-known monolithic business rules engine Costly to build, deploy, configure, test Being replaced #webperfdays @matthewpskelton
  34. 34. RELIABLEREPEATABLE RAPIDRECURRING #webperfdays @matthewpskelton
  35. 35. LIGHTWEIGHT LOAD BALANCING TESTABLEHIGH AVAILABILITY MONITORABLE SCALING CONFIGURABLE ELASTIC RECOVERABLE RAPID RECOVERY IDENTIFIABLE #webperfdays @matthewpskelton
  36. 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

×