SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
How build and deployment
shapes software architecture
    at thetrainline.com
  Matthew Skelton | thetrainline.com
WebPerfDays EU, London | #webperfdays
          05 October 2012


                                    #webperfdays
                                 @matthewpskelton
architecture
= f (build & deploy)
                (for some systems)




                       #webperfdays
                    @matthewpskelton
Systems engineering
      (robotics, control theory, sensors, neuroscience)




            Software
          development
(finance, insurance, travel, pharma, media, medical imaging)




                            now


Build & Deployment
at thetrainline.com
                                                                  #webperfdays
                                                               @matthewpskelton
#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

                                                        #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

                                             #webperfdays
                                          @matthewpskelton
#webperfdays
@matthewpskelton
• Early “distributed agile” success story
• http://www.thoughtworks.com/trainline




                                           #webperfdays
                                        @matthewpskelton
10+ dev teams in 2 locations
                                  #webperfdays
                               @matthewpskelton
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
#webperfdays
@matthewpskelton
#webperfdays
@matthewpskelton
architecture
= f (build & deploy)
                (for some systems)




                       #webperfdays
                    @matthewpskelton
“HERESY!”



          #webperfdays
       @matthewpskelton
#webperfdays
@matthewpskelton
#webperfdays
@matthewpskelton
#webperfdays
@matthewpskelton
Web-based

Frequently-
 changing

Public-facing

High-volume
          #webperfdays
       @matthewpskelton
#webperfdays
@matthewpskelton
RELIABLE
REPEATABLE
  RAPID
RECURRING       #webperfdays
             @matthewpskelton
‘R-R-R-R’
BUILD AND DEPLOYMENT
Helps to avoid the Ball of Mud

 Enables high-performance
        architectures
                             #webperfdays
                          @matthewpskelton
#webperfdays
@matthewpskelton
LOAD BALANCING
HIGH AVAILABILITY
    SCALING
     ELASTIC
 RAPID RECOVERY
                   #webperfdays
                @matthewpskelton
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
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
TESTABLE
Test (separation, harnesses, points)

         IDENTIFIABLE
  Meaningful versions, packages,
  defined dependencies, artefact
           management
       (think component boundaries)
                                         #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)

                                                          #webperfdays
                                                       @matthewpskelton
DEPLOYABLE
   Rapid, scriptable, simple failure modes

              MONITORABLE
    Logging, metrics, transaction tracing

               CONFIGURABLE
      Inject settings – no ‘black boxes’

              LIGHTWEIGHT
Keep things small and easily comprehendible
                                              #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)                   #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
Rebuild Build Agents with Chef

  Chef for environment rebuilds

Call Start() and Stop() on each
           component
                                      #webperfdays
                                   @matthewpskelton
#webperfdays
@matthewpskelton
Well-known monolithic business rules engine
   Costly to build, deploy, configure, test

              Being replaced



                                        #webperfdays
                                     @matthewpskelton
RELIABLE
REPEATABLE
  RAPID
RECURRING       #webperfdays
             @matthewpskelton
LIGHTWEIGHT
 LOAD BALANCING
                    TESTABLE
HIGH AVAILABILITY
                    MONITORABLE
         SCALING
                    CONFIGURABLE
          ELASTIC
                    RECOVERABLE
  RAPID RECOVERY
                    IDENTIFIABLE


                                #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                                #webperfdays
                                                                                                                   @matthewpskelton

Mais conteúdo relacionado

Semelhante a How build and deploy shapes software architecture at thetrainline.com

Gute Nachrichten, Schlechte Nachrichten
Gute Nachrichten, Schlechte NachrichtenGute Nachrichten, Schlechte Nachrichten
Gute Nachrichten, Schlechte NachrichtenChristoph Engelbert
 
How build-and-deploy-affects-architecture
How build-and-deploy-affects-architectureHow build-and-deploy-affects-architecture
How build-and-deploy-affects-architectureIasa UK
 
How build and deployment should shape software architectures
How build and deployment should shape software architecturesHow build and deployment should shape software architectures
How build and deployment should shape software architecturesMatthew Skelton
 
Red Hat Agile integration workshop - Atlanta
Red Hat Agile integration workshop - AtlantaRed Hat Agile integration workshop - Atlanta
Red Hat Agile integration workshop - AtlantaJudy Breedlove
 
Agile integration workshop Atlanta
Agile integration workshop   AtlantaAgile integration workshop   Atlanta
Agile integration workshop AtlantaJeremy Davis
 
3h à l'assaut d'une application réactive - Devoxx 2015
3h à l'assaut d'une application réactive - Devoxx 20153h à l'assaut d'une application réactive - Devoxx 2015
3h à l'assaut d'une application réactive - Devoxx 2015Publicis Sapient Engineering
 
Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"Fwdays
 
Oracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to MicroservicesOracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to MicroservicesAlberto Salazar
 
B4UConference_Sexy Angular Stack
B4UConference_Sexy Angular StackB4UConference_Sexy Angular Stack
B4UConference_Sexy Angular StackHoa Le
 
Sail In The Cloud
Sail In The CloudSail In The Cloud
Sail In The CloudAlex Soto
 
Controlling your race with Micrometer, Spring Boot and Cloud Foundry
Controlling your race with Micrometer, Spring Boot and Cloud FoundryControlling your race with Micrometer, Spring Boot and Cloud Foundry
Controlling your race with Micrometer, Spring Boot and Cloud FoundryKo Turk
 
A Taxonomy of Clustering, or, No Container is an Island
A Taxonomy of Clustering, or, No Container is an IslandA Taxonomy of Clustering, or, No Container is an Island
A Taxonomy of Clustering, or, No Container is an IslandTed M. Young
 
Continuous integration testing 2019 08
Continuous integration testing 2019 08Continuous integration testing 2019 08
Continuous integration testing 2019 08David Stanke
 
Fabio Tiriticco - Ádám Sándor - Akka Cluster versus Kubernetes: Clustering...
Fabio Tiriticco - Ádám Sándor - Akka Cluster versus Kubernetes: Clustering...Fabio Tiriticco - Ádám Sándor - Akka Cluster versus Kubernetes: Clustering...
Fabio Tiriticco - Ádám Sándor - Akka Cluster versus Kubernetes: Clustering...Codemotion
 
Dawarehouse como servicio en azure (sqldw)
Dawarehouse como servicio en azure (sqldw)Dawarehouse como servicio en azure (sqldw)
Dawarehouse como servicio en azure (sqldw)Enrique Catala Bañuls
 
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)bridgetkromhout
 
Integrating multiple CDNs at Etsy
Integrating multiple CDNs at EtsyIntegrating multiple CDNs at Etsy
Integrating multiple CDNs at EtsyLaurie Denness
 
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...Alberto Salazar
 
Problems you’ll face in the Microservices World: Configuration, Authenticatio...
Problems you’ll face in the Microservices World: Configuration, Authenticatio...Problems you’ll face in the Microservices World: Configuration, Authenticatio...
Problems you’ll face in the Microservices World: Configuration, Authenticatio...Quentin Adam
 
Agile integration workshop Seattle
Agile integration workshop SeattleAgile integration workshop Seattle
Agile integration workshop SeattleJudy Breedlove
 

Semelhante a How build and deploy shapes software architecture at thetrainline.com (20)

Gute Nachrichten, Schlechte Nachrichten
Gute Nachrichten, Schlechte NachrichtenGute Nachrichten, Schlechte Nachrichten
Gute Nachrichten, Schlechte Nachrichten
 
How build-and-deploy-affects-architecture
How build-and-deploy-affects-architectureHow build-and-deploy-affects-architecture
How build-and-deploy-affects-architecture
 
How build and deployment should shape software architectures
How build and deployment should shape software architecturesHow build and deployment should shape software architectures
How build and deployment should shape software architectures
 
Red Hat Agile integration workshop - Atlanta
Red Hat Agile integration workshop - AtlantaRed Hat Agile integration workshop - Atlanta
Red Hat Agile integration workshop - Atlanta
 
Agile integration workshop Atlanta
Agile integration workshop   AtlantaAgile integration workshop   Atlanta
Agile integration workshop Atlanta
 
3h à l'assaut d'une application réactive - Devoxx 2015
3h à l'assaut d'une application réactive - Devoxx 20153h à l'assaut d'une application réactive - Devoxx 2015
3h à l'assaut d'une application réactive - Devoxx 2015
 
Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"
 
Oracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to MicroservicesOracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to Microservices
 
B4UConference_Sexy Angular Stack
B4UConference_Sexy Angular StackB4UConference_Sexy Angular Stack
B4UConference_Sexy Angular Stack
 
Sail In The Cloud
Sail In The CloudSail In The Cloud
Sail In The Cloud
 
Controlling your race with Micrometer, Spring Boot and Cloud Foundry
Controlling your race with Micrometer, Spring Boot and Cloud FoundryControlling your race with Micrometer, Spring Boot and Cloud Foundry
Controlling your race with Micrometer, Spring Boot and Cloud Foundry
 
A Taxonomy of Clustering, or, No Container is an Island
A Taxonomy of Clustering, or, No Container is an IslandA Taxonomy of Clustering, or, No Container is an Island
A Taxonomy of Clustering, or, No Container is an Island
 
Continuous integration testing 2019 08
Continuous integration testing 2019 08Continuous integration testing 2019 08
Continuous integration testing 2019 08
 
Fabio Tiriticco - Ádám Sándor - Akka Cluster versus Kubernetes: Clustering...
Fabio Tiriticco - Ádám Sándor - Akka Cluster versus Kubernetes: Clustering...Fabio Tiriticco - Ádám Sándor - Akka Cluster versus Kubernetes: Clustering...
Fabio Tiriticco - Ádám Sándor - Akka Cluster versus Kubernetes: Clustering...
 
Dawarehouse como servicio en azure (sqldw)
Dawarehouse como servicio en azure (sqldw)Dawarehouse como servicio en azure (sqldw)
Dawarehouse como servicio en azure (sqldw)
 
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)
 
Integrating multiple CDNs at Etsy
Integrating multiple CDNs at EtsyIntegrating multiple CDNs at Etsy
Integrating multiple CDNs at Etsy
 
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
 
Problems you’ll face in the Microservices World: Configuration, Authenticatio...
Problems you’ll face in the Microservices World: Configuration, Authenticatio...Problems you’ll face in the Microservices World: Configuration, Authenticatio...
Problems you’ll face in the Microservices World: Configuration, Authenticatio...
 
Agile integration workshop Seattle
Agile integration workshop SeattleAgile integration workshop Seattle
Agile integration workshop Seattle
 

Mais de Matthew Skelton

Find me on SpeakerDeck! - Matthew Skelton.pdf
Find me on SpeakerDeck! - Matthew Skelton.pdfFind me on SpeakerDeck! - Matthew Skelton.pdf
Find me on SpeakerDeck! - Matthew Skelton.pdfMatthew Skelton
 
Business and technical agility with Team Topologies - QCon Plus - 2021-05-26
Business and technical agility with Team Topologies - QCon Plus - 2021-05-26Business and technical agility with Team Topologies - QCon Plus - 2021-05-26
Business and technical agility with Team Topologies - QCon Plus - 2021-05-26Matthew Skelton
 
What is platform as a product? Clues from Team Topologies - WTFinar with Cont...
What is platform as a product? Clues from Team Topologies - WTFinar with Cont...What is platform as a product? Clues from Team Topologies - WTFinar with Cont...
What is platform as a product? Clues from Team Topologies - WTFinar with Cont...Matthew Skelton
 
Business agility with Team Topologies - NatWest Group - 2021-01-19
Business agility with Team Topologies - NatWest Group - 2021-01-19Business agility with Team Topologies - NatWest Group - 2021-01-19
Business agility with Team Topologies - NatWest Group - 2021-01-19Matthew Skelton
 
WFT is platform as a product? Clues from Team Topologies - WTFinar with Conta...
WFT is platform as a product? Clues from Team Topologies - WTFinar with Conta...WFT is platform as a product? Clues from Team Topologies - WTFinar with Conta...
WFT is platform as a product? Clues from Team Topologies - WTFinar with Conta...Matthew Skelton
 
Beyond the Spotify Model - Team Topologies - Tech.rocks - 2020-12-10 - Matthe...
Beyond the Spotify Model - Team Topologies - Tech.rocks - 2020-12-10 - Matthe...Beyond the Spotify Model - Team Topologies - Tech.rocks - 2020-12-10 - Matthe...
Beyond the Spotify Model - Team Topologies - Tech.rocks - 2020-12-10 - Matthe...Matthew Skelton
 
Accidental Architects - how HR designs software systems - Team Topologies - f...
Accidental Architects - how HR designs software systems - Team Topologies - f...Accidental Architects - how HR designs software systems - Team Topologies - f...
Accidental Architects - how HR designs software systems - Team Topologies - f...Matthew Skelton
 
Team Topologies in action - early results from industry - DOES Las Vegas 2020...
Team Topologies in action - early results from industry - DOES Las Vegas 2020...Team Topologies in action - early results from industry - DOES Las Vegas 2020...
Team Topologies in action - early results from industry - DOES Las Vegas 2020...Matthew Skelton
 
What is platform as a product? Clues from Team Topologies - Puppetize 2020 - ...
What is platform as a product? Clues from Team Topologies - Puppetize 2020 - ...What is platform as a product? Clues from Team Topologies - Puppetize 2020 - ...
What is platform as a product? Clues from Team Topologies - Puppetize 2020 - ...Matthew Skelton
 
Remote first team interactions with Team Topologies - Iris Software Group - 2...
Remote first team interactions with Team Topologies - Iris Software Group - 2...Remote first team interactions with Team Topologies - Iris Software Group - 2...
Remote first team interactions with Team Topologies - Iris Software Group - 2...Matthew Skelton
 
Team Topologies in action - early results from industry - DOES London Virtual...
Team Topologies in action - early results from industry - DOES London Virtual...Team Topologies in action - early results from industry - DOES London Virtual...
Team Topologies in action - early results from industry - DOES London Virtual...Matthew Skelton
 
Accidental Architects - how HR designs software systems - Team Topologies - e...
Accidental Architects - how HR designs software systems - Team Topologies - e...Accidental Architects - how HR designs software systems - Team Topologies - e...
Accidental Architects - how HR designs software systems - Team Topologies - e...Matthew Skelton
 
Remote-first team interactions with Team Topologies - SEAM - 2020-05-13
Remote-first team interactions with Team Topologies - SEAM - 2020-05-13Remote-first team interactions with Team Topologies - SEAM - 2020-05-13
Remote-first team interactions with Team Topologies - SEAM - 2020-05-13Matthew Skelton
 
Remote-first team interactions with Team Topologies - Agile Yorkshire - 2020-...
Remote-first team interactions with Team Topologies - Agile Yorkshire - 2020-...Remote-first team interactions with Team Topologies - Agile Yorkshire - 2020-...
Remote-first team interactions with Team Topologies - Agile Yorkshire - 2020-...Matthew Skelton
 
Remote first team interactions with Team Topologies - IT Revolution webinar -...
Remote first team interactions with Team Topologies - IT Revolution webinar -...Remote first team interactions with Team Topologies - IT Revolution webinar -...
Remote first team interactions with Team Topologies - IT Revolution webinar -...Matthew Skelton
 
Remote-first team interactions with Team Topologies
Remote-first team interactions with Team TopologiesRemote-first team interactions with Team Topologies
Remote-first team interactions with Team TopologiesMatthew Skelton
 
Forget monoliths vs microservices - focus on Team Cognitive Load - Team Topol...
Forget monoliths vs microservices - focus on Team Cognitive Load - Team Topol...Forget monoliths vs microservices - focus on Team Cognitive Load - Team Topol...
Forget monoliths vs microservices - focus on Team Cognitive Load - Team Topol...Matthew Skelton
 
How to break apart a monolithic system safely without destroying your team - ...
How to break apart a monolithic system safely without destroying your team - ...How to break apart a monolithic system safely without destroying your team - ...
How to break apart a monolithic system safely without destroying your team - ...Matthew Skelton
 
Un-broken logging - the foundation of software operability - Operability.io -...
Un-broken logging - the foundation of software operability - Operability.io -...Un-broken logging - the foundation of software operability - Operability.io -...
Un-broken logging - the foundation of software operability - Operability.io -...Matthew Skelton
 
Forget monoliths vs microservices - focus on team cognitive load - Team Topol...
Forget monoliths vs microservices - focus on team cognitive load - Team Topol...Forget monoliths vs microservices - focus on team cognitive load - Team Topol...
Forget monoliths vs microservices - focus on team cognitive load - Team Topol...Matthew Skelton
 

Mais de Matthew Skelton (20)

Find me on SpeakerDeck! - Matthew Skelton.pdf
Find me on SpeakerDeck! - Matthew Skelton.pdfFind me on SpeakerDeck! - Matthew Skelton.pdf
Find me on SpeakerDeck! - Matthew Skelton.pdf
 
Business and technical agility with Team Topologies - QCon Plus - 2021-05-26
Business and technical agility with Team Topologies - QCon Plus - 2021-05-26Business and technical agility with Team Topologies - QCon Plus - 2021-05-26
Business and technical agility with Team Topologies - QCon Plus - 2021-05-26
 
What is platform as a product? Clues from Team Topologies - WTFinar with Cont...
What is platform as a product? Clues from Team Topologies - WTFinar with Cont...What is platform as a product? Clues from Team Topologies - WTFinar with Cont...
What is platform as a product? Clues from Team Topologies - WTFinar with Cont...
 
Business agility with Team Topologies - NatWest Group - 2021-01-19
Business agility with Team Topologies - NatWest Group - 2021-01-19Business agility with Team Topologies - NatWest Group - 2021-01-19
Business agility with Team Topologies - NatWest Group - 2021-01-19
 
WFT is platform as a product? Clues from Team Topologies - WTFinar with Conta...
WFT is platform as a product? Clues from Team Topologies - WTFinar with Conta...WFT is platform as a product? Clues from Team Topologies - WTFinar with Conta...
WFT is platform as a product? Clues from Team Topologies - WTFinar with Conta...
 
Beyond the Spotify Model - Team Topologies - Tech.rocks - 2020-12-10 - Matthe...
Beyond the Spotify Model - Team Topologies - Tech.rocks - 2020-12-10 - Matthe...Beyond the Spotify Model - Team Topologies - Tech.rocks - 2020-12-10 - Matthe...
Beyond the Spotify Model - Team Topologies - Tech.rocks - 2020-12-10 - Matthe...
 
Accidental Architects - how HR designs software systems - Team Topologies - f...
Accidental Architects - how HR designs software systems - Team Topologies - f...Accidental Architects - how HR designs software systems - Team Topologies - f...
Accidental Architects - how HR designs software systems - Team Topologies - f...
 
Team Topologies in action - early results from industry - DOES Las Vegas 2020...
Team Topologies in action - early results from industry - DOES Las Vegas 2020...Team Topologies in action - early results from industry - DOES Las Vegas 2020...
Team Topologies in action - early results from industry - DOES Las Vegas 2020...
 
What is platform as a product? Clues from Team Topologies - Puppetize 2020 - ...
What is platform as a product? Clues from Team Topologies - Puppetize 2020 - ...What is platform as a product? Clues from Team Topologies - Puppetize 2020 - ...
What is platform as a product? Clues from Team Topologies - Puppetize 2020 - ...
 
Remote first team interactions with Team Topologies - Iris Software Group - 2...
Remote first team interactions with Team Topologies - Iris Software Group - 2...Remote first team interactions with Team Topologies - Iris Software Group - 2...
Remote first team interactions with Team Topologies - Iris Software Group - 2...
 
Team Topologies in action - early results from industry - DOES London Virtual...
Team Topologies in action - early results from industry - DOES London Virtual...Team Topologies in action - early results from industry - DOES London Virtual...
Team Topologies in action - early results from industry - DOES London Virtual...
 
Accidental Architects - how HR designs software systems - Team Topologies - e...
Accidental Architects - how HR designs software systems - Team Topologies - e...Accidental Architects - how HR designs software systems - Team Topologies - e...
Accidental Architects - how HR designs software systems - Team Topologies - e...
 
Remote-first team interactions with Team Topologies - SEAM - 2020-05-13
Remote-first team interactions with Team Topologies - SEAM - 2020-05-13Remote-first team interactions with Team Topologies - SEAM - 2020-05-13
Remote-first team interactions with Team Topologies - SEAM - 2020-05-13
 
Remote-first team interactions with Team Topologies - Agile Yorkshire - 2020-...
Remote-first team interactions with Team Topologies - Agile Yorkshire - 2020-...Remote-first team interactions with Team Topologies - Agile Yorkshire - 2020-...
Remote-first team interactions with Team Topologies - Agile Yorkshire - 2020-...
 
Remote first team interactions with Team Topologies - IT Revolution webinar -...
Remote first team interactions with Team Topologies - IT Revolution webinar -...Remote first team interactions with Team Topologies - IT Revolution webinar -...
Remote first team interactions with Team Topologies - IT Revolution webinar -...
 
Remote-first team interactions with Team Topologies
Remote-first team interactions with Team TopologiesRemote-first team interactions with Team Topologies
Remote-first team interactions with Team Topologies
 
Forget monoliths vs microservices - focus on Team Cognitive Load - Team Topol...
Forget monoliths vs microservices - focus on Team Cognitive Load - Team Topol...Forget monoliths vs microservices - focus on Team Cognitive Load - Team Topol...
Forget monoliths vs microservices - focus on Team Cognitive Load - Team Topol...
 
How to break apart a monolithic system safely without destroying your team - ...
How to break apart a monolithic system safely without destroying your team - ...How to break apart a monolithic system safely without destroying your team - ...
How to break apart a monolithic system safely without destroying your team - ...
 
Un-broken logging - the foundation of software operability - Operability.io -...
Un-broken logging - the foundation of software operability - Operability.io -...Un-broken logging - the foundation of software operability - Operability.io -...
Un-broken logging - the foundation of software operability - Operability.io -...
 
Forget monoliths vs microservices - focus on team cognitive load - Team Topol...
Forget monoliths vs microservices - focus on team cognitive load - Team Topol...Forget monoliths vs microservices - focus on team cognitive load - Team Topol...
Forget monoliths vs microservices - focus on team cognitive load - Team Topol...
 

Último

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Último (20)

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
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
  • 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) 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
  • 13. architecture = f (build & deploy) (for some systems) #webperfdays @matthewpskelton
  • 14. “HERESY!” #webperfdays @matthewpskelton
  • 20. RELIABLE REPEATABLE RAPID RECURRING #webperfdays @matthewpskelton
  • 21. ‘R-R-R-R’ BUILD AND DEPLOYMENT Helps to avoid the Ball of Mud Enables high-performance architectures #webperfdays @matthewpskelton
  • 23. LOAD BALANCING HIGH AVAILABILITY SCALING ELASTIC RAPID RECOVERY #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
  • 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’ LIGHTWEIGHT Keep 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 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
  • 33. Well-known monolithic business rules engine Costly to build, deploy, configure, test Being replaced #webperfdays @matthewpskelton
  • 34. RELIABLE REPEATABLE RAPID RECURRING #webperfdays @matthewpskelton
  • 35. LIGHTWEIGHT LOAD BALANCING TESTABLE HIGH 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