Your SlideShare is downloading. ×
How build and deploy shapes software architecture at thetrainline.com
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

How build and deploy shapes software architecture at thetrainline.com

2,660
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 …

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
2,660
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
8
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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