SlideShare une entreprise Scribd logo
1  sur  27
Release Workflow


Diego Muñoz
diego@tuenti.com
http://twitter.com/Kartones
                                    V1.1
Agenda
• Numbers
• Release workflow
• Tools
Numbers
•   +13M users (~10,4M active users dec 2011)
•   +100 usage minutes / day (avg)
•   +400M chat messages / day
•   +4M photos uploaded / day (peaks)
•   +41,000M page views / month
•   +35K requests / sec (peaks)
•   +1,3K servers
•   +250 employees (~60% techies)
•   +15K files in the repositories
•   +10K Tests
Release Workflow



Branch   Code   Test   Integrate   Release   Stabilize
Release Workflow: Branch
Branch      Code      Test    Integrate   Release   Stabilize




•   Avg. 15 branches per release
•   Current record: 29 branches
•   Repository per functional area (be, fe, stats, …)
•   Avg. lines modified per release: 63K
Release Workflow: Code + Test
Branch      Code      Test      Integrate   Release   Stabilize




•   Scrum (or at least Agile)
•   As TDD as possible
•   Labs
•   A/B Testing
•   PoCs
•   Dark launch
Release Workflow: Integrate
Branch     Code        Test    Integrate   Release   Stabilize




• Repo always available
• Specific release date given by devops
   – Merge & wait for target
• Only merge if 100% tests ok or specific approval
• QA Regression & manual tests
• Fix possible integration problems ASAP
Release Workflow: Release
Branch     Code      Test    Integrate   Release   Stabilize




• 3 releases per week
   – DevOps goal: All weekdays
• Latest stable changeset from Integration taken
  previous working day morning
• Release doc, pre-release meetings
• Staging servers to test with live data
Release Workflow: Stabilize
Branch     Code      Test    Integrate   Release   Stabilize




• First code push: 8 AM
   – DevOps Goal: single push + release closed
• Release window: 1-2 h
   – DevOps goal: < 30 minutes
• Error stabilization or release rollback
• Representatives from all involved teams
Tools
DVCS: Mercurial
• http://mercurial.selenic.com/
• Syntax similar to SVN (our old system)
• Easy API to plug our plugins and hooks
• Cross-platform
• Tuenti Addons:
   – Commit hooks to check syntax, push ticket #...
• Problems:
   – Push/pulls through VPN are slow
   – Handling multiple repos still slow
   – Only one level of rollback!
Issue Tracking: Trac
• http://trac.edgewall.org/
• User Stories tasks + Bugs
• Wiki (now also internal Google Sites)
• Plugins and extensible
• Tuenti Addons:
   – Master/Slave architecture
   – Tons of tweaks and source code integration hooks
• Problems:
   – Slow, limited, code viewing sucks
• Migration to JIRA planned
Testing: PHPUnit
• http://www.phpunit.de
• Some caveats
   – Mocking just „works‟
   – PHP process spawning PHP tests
• Tuenti Addons:
   – Vastly improved mocking framework
   – Shell scripts that isolate test batteries
   – Better integration with Selenium
• Problems:
   – Our current FEFW does not cope perfectly with
     PHPUnit/Selenium
Testing: Selenium
• http://seleniumhq.org/
• Running browser tests in FFox and IE
• Tuenti Addons:
   – Custom build with some fixes
• Problems:
   – Javascript handling/detection not perfect
   – AJAX far from optimal
   – IE runner is an iframe
• Planned migration to Webdriver
CI: Jenkins
•   http://jenkins-ci.org/
•   Previously Hudson too
•   Specialized farm (master + 22 nodes)
•   Tuenti Addons:
    • Parallelization (up to 6 nodes)
    • Special reports
    • “Smart” runs (try first last failed tests, etc.)
• Problems:
    • Browser tests slow (due to Selenium)
    • Unstable (mainly due to Selenium)
Storage: MySQL
• http://www.mysql.com/ | http://www.percona.com
• Live site storage
• Dev. env. storage
   – 1 DB per user (to run tests)
   – 1 shared DB (common faked data)
• Clusters of master/slave DBs
• Problems:
   – Slow when running tests
   – Shared dev DB has old-time inconsistencies
Storage: Hadoop
•   http://hadoop.apache.org/
•   Dedicated cluster
•   Pig scripts: Stats, other non-realtime data
•   HBase: Async. data storage
•   Hive: SQL-like querying
•   Problems:
     – Complex configuration for newcomers
Caching: Memcached
•   http://memcached.org/
•   Avg. DB querys/pageview: 0.3
•   Dev. Behaviour == live behaviour
•   Tuenti Addons (https://github.com/tuenti):
    – UDP + multi-ports
• Problems:
    – 32GB RAM / machine practical limit
    – Remember to warm-up data or MC will kill the DB!
Configuration: Puppet
•   http://puppetlabs.com/
•   Production machines
•   Jenkins nodes
•   VM management / Dev web servers config
•   Problems:
    – Wipes user config if not puppetized
Search: Sphinx
•   http://sphinxsearch.com/
•   Non-realtime (index based)
•   Very fast
•   Problems
    – Index re-generation on dev & test env.
    – Could be more friendly to add new data
Build: Our build script
•   http://ant.apache.org/
•   Localization
•   Minification + Bundling + Versioning
•   Statics deployment to CDNs
•   Fast: 2-3 minutes full build
    – Multithreading + parallelization
• Allows partial, component based builds
• Problems:
    – Under heavy CPU load, build time goes up :(
Build: RSync
•   http://rsync.samba.org/
•   Deployment of code (live & dev)
•   Sends deltas/diffs
•   Really fast
Statics bundling: YUI
•   Less files == faster download & deploy
•   Big text file == better HTTP Gzip
•   HTML/JS/CSS Minification
•   Ultra fast build: ~4 seconds in Dev.
•   On demand JS loading!
•   Nice typical framework features
•   Wonderful & simple events system
Statics bundling: YUI (II)
• Tuenti Addons:
 – Caching builds
 – Line breaks each # characters (easier IE debugging)
 – CDNs handling
• Problems:
 – Change in JS requires rebuilding even in dev.
 – Requires small migrations/changes in existing JS
Chat Server: Ejabberd
•   http://www.ejabberd.im/
•   Erlang XMPP (Jabber) server
•   400M msgs/day, 1M concurrent users peak,…
•   20 machines, ~5 instances per machine
•   Tuenti Addons:
    – Ejjabberd codebase tweaked (3,5x faster)
    – Protocol tweaks to optimize for our architecture
• Problems:
    – Same behaviour dev/live is critical
Compilation: HipHop
• Migrating old code to fully support HipHop
  – With PHP 5.3
• Obvious speed improvements
• Also nice for static code analysis
exit(0);


 Sounds interesting?
http://jobs.tuenti.com

Contenu connexe

Tendances

TDD for APIs @ Europython 2015, Bilbao by Michael Kuehne
TDD for APIs @ Europython 2015, Bilbao by Michael KuehneTDD for APIs @ Europython 2015, Bilbao by Michael Kuehne
TDD for APIs @ Europython 2015, Bilbao by Michael KuehneMichael Kuehne-Schlinkert
 
Jenkins Pipelining and Gatling Integration
Jenkins Pipelining and  Gatling IntegrationJenkins Pipelining and  Gatling Integration
Jenkins Pipelining and Gatling IntegrationKnoldus Inc.
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportSencha
 
Care and Feeding of Large Web Applications
Care and Feeding of Large Web ApplicationsCare and Feeding of Large Web Applications
Care and Feeding of Large Web ApplicationsPerrin Harkins
 
Introduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya SharmaIntroduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya SharmaAmulya Sharma
 
Continuous integration using Jenkins and Sonar
Continuous integration using Jenkins and SonarContinuous integration using Jenkins and Sonar
Continuous integration using Jenkins and SonarPascal Larocque
 
How to contribute to an open source project and don’t die during the Code Rev...
How to contribute to an open source project and don’t die during the Code Rev...How to contribute to an open source project and don’t die during the Code Rev...
How to contribute to an open source project and don’t die during the Code Rev...Victor Morales
 
Splunk conf2014 - Using Selenium and Splunk for Transaction Monitoring Insight
Splunk conf2014 - Using Selenium and Splunk for Transaction Monitoring InsightSplunk conf2014 - Using Selenium and Splunk for Transaction Monitoring Insight
Splunk conf2014 - Using Selenium and Splunk for Transaction Monitoring InsightSplunk
 
Trying Out Tomorrow’s WordPress Today
Trying Out Tomorrow’s WordPress TodayTrying Out Tomorrow’s WordPress Today
Trying Out Tomorrow’s WordPress TodayDrewAPicture
 
Perl Continous Integration
Perl Continous IntegrationPerl Continous Integration
Perl Continous IntegrationMichael Peters
 
All of the thing about Postman
All of the thing about PostmanAll of the thing about Postman
All of the thing about PostmanAlihossein shahabi
 
Drupalcamp Simpletest
Drupalcamp SimpletestDrupalcamp Simpletest
Drupalcamp Simpletestlyricnz
 
Speed up your regression and reduce cost load with Selenoid + K8s + ReportPortal
Speed up your regression and reduce cost load with Selenoid + K8s + ReportPortalSpeed up your regression and reduce cost load with Selenoid + K8s + ReportPortal
Speed up your regression and reduce cost load with Selenoid + K8s + ReportPortalDanylo Kuvshynov
 
Android Continuous Integration and Automation - Enrique Lopez Manas, Sixt
Android Continuous Integration and Automation - Enrique Lopez Manas, SixtAndroid Continuous Integration and Automation - Enrique Lopez Manas, Sixt
Android Continuous Integration and Automation - Enrique Lopez Manas, SixtDroidConTLV
 
Why you should switch to Cypress for modern web testing?
Why you should switch to Cypress for modern web testing?Why you should switch to Cypress for modern web testing?
Why you should switch to Cypress for modern web testing?Shivam Bharadwaj
 
Production Ready WordPress #WPLDN
Production Ready WordPress #WPLDNProduction Ready WordPress #WPLDN
Production Ready WordPress #WPLDNEdmund Turbin
 
Production Ready WordPress - WC Utrecht 2017
Production Ready WordPress  - WC Utrecht 2017Production Ready WordPress  - WC Utrecht 2017
Production Ready WordPress - WC Utrecht 2017Edmund Turbin
 

Tendances (19)

TDD for APIs @ Europython 2015, Bilbao by Michael Kuehne
TDD for APIs @ Europython 2015, Bilbao by Michael KuehneTDD for APIs @ Europython 2015, Bilbao by Michael Kuehne
TDD for APIs @ Europython 2015, Bilbao by Michael Kuehne
 
Jenkins Pipelining and Gatling Integration
Jenkins Pipelining and  Gatling IntegrationJenkins Pipelining and  Gatling Integration
Jenkins Pipelining and Gatling Integration
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research Report
 
Care and Feeding of Large Web Applications
Care and Feeding of Large Web ApplicationsCare and Feeding of Large Web Applications
Care and Feeding of Large Web Applications
 
Introduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya SharmaIntroduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya Sharma
 
Continuous integration using Jenkins and Sonar
Continuous integration using Jenkins and SonarContinuous integration using Jenkins and Sonar
Continuous integration using Jenkins and Sonar
 
How to contribute to an open source project and don’t die during the Code Rev...
How to contribute to an open source project and don’t die during the Code Rev...How to contribute to an open source project and don’t die during the Code Rev...
How to contribute to an open source project and don’t die during the Code Rev...
 
Splunk conf2014 - Using Selenium and Splunk for Transaction Monitoring Insight
Splunk conf2014 - Using Selenium and Splunk for Transaction Monitoring InsightSplunk conf2014 - Using Selenium and Splunk for Transaction Monitoring Insight
Splunk conf2014 - Using Selenium and Splunk for Transaction Monitoring Insight
 
Trying Out Tomorrow’s WordPress Today
Trying Out Tomorrow’s WordPress TodayTrying Out Tomorrow’s WordPress Today
Trying Out Tomorrow’s WordPress Today
 
Perl Continous Integration
Perl Continous IntegrationPerl Continous Integration
Perl Continous Integration
 
All of the thing about Postman
All of the thing about PostmanAll of the thing about Postman
All of the thing about Postman
 
Drupalcamp Simpletest
Drupalcamp SimpletestDrupalcamp Simpletest
Drupalcamp Simpletest
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
Speed up your regression and reduce cost load with Selenoid + K8s + ReportPortal
Speed up your regression and reduce cost load with Selenoid + K8s + ReportPortalSpeed up your regression and reduce cost load with Selenoid + K8s + ReportPortal
Speed up your regression and reduce cost load with Selenoid + K8s + ReportPortal
 
Android Continuous Integration and Automation - Enrique Lopez Manas, Sixt
Android Continuous Integration and Automation - Enrique Lopez Manas, SixtAndroid Continuous Integration and Automation - Enrique Lopez Manas, Sixt
Android Continuous Integration and Automation - Enrique Lopez Manas, Sixt
 
Ui Testing with Ghost Inspector
Ui Testing with Ghost InspectorUi Testing with Ghost Inspector
Ui Testing with Ghost Inspector
 
Why you should switch to Cypress for modern web testing?
Why you should switch to Cypress for modern web testing?Why you should switch to Cypress for modern web testing?
Why you should switch to Cypress for modern web testing?
 
Production Ready WordPress #WPLDN
Production Ready WordPress #WPLDNProduction Ready WordPress #WPLDN
Production Ready WordPress #WPLDN
 
Production Ready WordPress - WC Utrecht 2017
Production Ready WordPress  - WC Utrecht 2017Production Ready WordPress  - WC Utrecht 2017
Production Ready WordPress - WC Utrecht 2017
 

En vedette

9th chapter 4 quiz.
9th chapter 4 quiz.9th chapter 4 quiz.
9th chapter 4 quiz.mohan bio
 
Agile concepts for quality and process engineers for slideshare
Agile concepts for quality and process engineers   for slideshareAgile concepts for quality and process engineers   for slideshare
Agile concepts for quality and process engineers for slideshareYuval Yeret
 
Comparison of Public Workers Salaries in New York
Comparison of Public Workers Salaries in New YorkComparison of Public Workers Salaries in New York
Comparison of Public Workers Salaries in New YorkJohn Citibois
 
XML simple Introduction
XML simple IntroductionXML simple Introduction
XML simple Introductionalphap13
 
13 hja 01 motive power mst
13 hja 01 motive power mst13 hja 01 motive power mst
13 hja 01 motive power mstHenning Jacobsen
 
DIYDays - Working with a Creative Technologist
DIYDays - Working with a Creative TechnologistDIYDays - Working with a Creative Technologist
DIYDays - Working with a Creative Technologistheidihysell
 
Scoop intro for customers 121114 cf (1)
Scoop intro for customers 121114 cf (1)Scoop intro for customers 121114 cf (1)
Scoop intro for customers 121114 cf (1)Charlie Pankey
 
PhRMA Report 2012: Medicines in Development for Children
PhRMA Report 2012: Medicines in Development for ChildrenPhRMA Report 2012: Medicines in Development for Children
PhRMA Report 2012: Medicines in Development for ChildrenPhRMA
 
Revaluing Ecosystems: A special edition of The Economist magazine
Revaluing Ecosystems: A special edition of The Economist magazineRevaluing Ecosystems: A special edition of The Economist magazine
Revaluing Ecosystems: A special edition of The Economist magazineThe Rockefeller Foundation
 
Remarketing with Google Analytics - SES London 2013
Remarketing with Google Analytics - SES London 2013Remarketing with Google Analytics - SES London 2013
Remarketing with Google Analytics - SES London 2013Samantha Noble
 
Don't Believe the Hype, Keywords Aren't Dead!
Don't Believe the Hype, Keywords Aren't Dead!Don't Believe the Hype, Keywords Aren't Dead!
Don't Believe the Hype, Keywords Aren't Dead!David Black
 
10 Pictures that should never be your #LinkedIn Profile Picture
10 Pictures that should never be your #LinkedIn Profile Picture10 Pictures that should never be your #LinkedIn Profile Picture
10 Pictures that should never be your #LinkedIn Profile PictureTariq Ahmad
 
Dr. Chris Vinnard's 2013 HIV Treatment Update
Dr. Chris Vinnard's 2013 HIV Treatment UpdateDr. Chris Vinnard's 2013 HIV Treatment Update
Dr. Chris Vinnard's 2013 HIV Treatment UpdateOffice of HIV Planning
 

En vedette (20)

Momentos
MomentosMomentos
Momentos
 
BAR GRAPH
BAR GRAPHBAR GRAPH
BAR GRAPH
 
9th chapter 4 quiz.
9th chapter 4 quiz.9th chapter 4 quiz.
9th chapter 4 quiz.
 
Agile concepts for quality and process engineers for slideshare
Agile concepts for quality and process engineers   for slideshareAgile concepts for quality and process engineers   for slideshare
Agile concepts for quality and process engineers for slideshare
 
Daneia Stratighkh Katagrafh
Daneia Stratighkh KatagrafhDaneia Stratighkh Katagrafh
Daneia Stratighkh Katagrafh
 
Informatica tarea
Informatica tareaInformatica tarea
Informatica tarea
 
Comparison of Public Workers Salaries in New York
Comparison of Public Workers Salaries in New YorkComparison of Public Workers Salaries in New York
Comparison of Public Workers Salaries in New York
 
XML simple Introduction
XML simple IntroductionXML simple Introduction
XML simple Introduction
 
13 hja 01 motive power mst
13 hja 01 motive power mst13 hja 01 motive power mst
13 hja 01 motive power mst
 
DIYDays - Working with a Creative Technologist
DIYDays - Working with a Creative TechnologistDIYDays - Working with a Creative Technologist
DIYDays - Working with a Creative Technologist
 
Scoop intro for customers 121114 cf (1)
Scoop intro for customers 121114 cf (1)Scoop intro for customers 121114 cf (1)
Scoop intro for customers 121114 cf (1)
 
Xna game development
Xna game developmentXna game development
Xna game development
 
PhRMA Report 2012: Medicines in Development for Children
PhRMA Report 2012: Medicines in Development for ChildrenPhRMA Report 2012: Medicines in Development for Children
PhRMA Report 2012: Medicines in Development for Children
 
Revaluing Ecosystems: A special edition of The Economist magazine
Revaluing Ecosystems: A special edition of The Economist magazineRevaluing Ecosystems: A special edition of The Economist magazine
Revaluing Ecosystems: A special edition of The Economist magazine
 
Remarketing with Google Analytics - SES London 2013
Remarketing with Google Analytics - SES London 2013Remarketing with Google Analytics - SES London 2013
Remarketing with Google Analytics - SES London 2013
 
Emprendedor
EmprendedorEmprendedor
Emprendedor
 
The Apprentiice Profile
The Apprentiice ProfileThe Apprentiice Profile
The Apprentiice Profile
 
Don't Believe the Hype, Keywords Aren't Dead!
Don't Believe the Hype, Keywords Aren't Dead!Don't Believe the Hype, Keywords Aren't Dead!
Don't Believe the Hype, Keywords Aren't Dead!
 
10 Pictures that should never be your #LinkedIn Profile Picture
10 Pictures that should never be your #LinkedIn Profile Picture10 Pictures that should never be your #LinkedIn Profile Picture
10 Pictures that should never be your #LinkedIn Profile Picture
 
Dr. Chris Vinnard's 2013 HIV Treatment Update
Dr. Chris Vinnard's 2013 HIV Treatment UpdateDr. Chris Vinnard's 2013 HIV Treatment Update
Dr. Chris Vinnard's 2013 HIV Treatment Update
 

Similaire à Tuenti Release Workflow v1.1

Ship It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemShip It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemYi-Ting Cheng
 
Crash reports pycodeconf
Crash reports pycodeconfCrash reports pycodeconf
Crash reports pycodeconflauraxthomson
 
Firefox Crash Reporting (@ Open Source Bridge)
Firefox Crash Reporting (@ Open Source Bridge)Firefox Crash Reporting (@ Open Source Bridge)
Firefox Crash Reporting (@ Open Source Bridge)lauraxthomson
 
Spring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionSpring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionStefan Schmidt
 
SOA with PHP and Symfony
SOA with PHP and SymfonySOA with PHP and Symfony
SOA with PHP and SymfonyMichalSchroeder
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...E. Camden Fisher
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterpriseBert Poller
 
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!Teamstudio
 
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...Gaetano Giunta
 
Ruby and Distributed Storage Systems
Ruby and Distributed Storage SystemsRuby and Distributed Storage Systems
Ruby and Distributed Storage SystemsSATOSHI TAGOMORI
 
Kubernetes Manchester - 6th December 2018
Kubernetes Manchester - 6th December 2018Kubernetes Manchester - 6th December 2018
Kubernetes Manchester - 6th December 2018David Stockton
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcachedJurriaan Persyn
 
Realtime traffic analyser
Realtime traffic analyserRealtime traffic analyser
Realtime traffic analyserAlex Moskvin
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"IT Event
 
April, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best PracticesApril, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best PracticesHoward Greenberg
 
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Ahmed El-Arabawy
 
The eBay-Way Meetup IL - CI/CD with Microservices
The eBay-Way Meetup IL - CI/CD with MicroservicesThe eBay-Way Meetup IL - CI/CD with Microservices
The eBay-Way Meetup IL - CI/CD with Microservicesyinonavraham
 
Delphix and DBmaestro
Delphix and DBmaestroDelphix and DBmaestro
Delphix and DBmaestroKyle Hailey
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Controlindiver
 

Similaire à Tuenti Release Workflow v1.1 (20)

Ship It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemShip It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails Ecosystem
 
Crash reports pycodeconf
Crash reports pycodeconfCrash reports pycodeconf
Crash reports pycodeconf
 
Firefox Crash Reporting (@ Open Source Bridge)
Firefox Crash Reporting (@ Open Source Bridge)Firefox Crash Reporting (@ Open Source Bridge)
Firefox Crash Reporting (@ Open Source Bridge)
 
Spring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionSpring Roo Add-On Development & Distribution
Spring Roo Add-On Development & Distribution
 
SOA with PHP and Symfony
SOA with PHP and SymfonySOA with PHP and Symfony
SOA with PHP and Symfony
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterprise
 
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!
 
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
eZ Publish 5: from zero to automated deployment (and no regressions!) in one ...
 
Ruby and Distributed Storage Systems
Ruby and Distributed Storage SystemsRuby and Distributed Storage Systems
Ruby and Distributed Storage Systems
 
Kubernetes Manchester - 6th December 2018
Kubernetes Manchester - 6th December 2018Kubernetes Manchester - 6th December 2018
Kubernetes Manchester - 6th December 2018
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcached
 
Realtime traffic analyser
Realtime traffic analyserRealtime traffic analyser
Realtime traffic analyser
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
 
manage databases like codebases
manage databases like codebasesmanage databases like codebases
manage databases like codebases
 
April, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best PracticesApril, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best Practices
 
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
 
The eBay-Way Meetup IL - CI/CD with Microservices
The eBay-Way Meetup IL - CI/CD with MicroservicesThe eBay-Way Meetup IL - CI/CD with Microservices
The eBay-Way Meetup IL - CI/CD with Microservices
 
Delphix and DBmaestro
Delphix and DBmaestroDelphix and DBmaestro
Delphix and DBmaestro
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Control
 

Plus de Tuenti

Tu: Telco 2.0 at FICOD 2011
Tu: Telco 2.0 at FICOD 2011Tu: Telco 2.0 at FICOD 2011
Tu: Telco 2.0 at FICOD 2011Tuenti
 
Tuenti - de la idea a la web
Tuenti -  de la idea a la webTuenti -  de la idea a la web
Tuenti - de la idea a la webTuenti
 
Tuenti Mobile Development
Tuenti Mobile DevelopmentTuenti Mobile Development
Tuenti Mobile DevelopmentTuenti
 
Tuenti: Web Application Security
Tuenti: Web Application SecurityTuenti: Web Application Security
Tuenti: Web Application SecurityTuenti
 
Tuenti release process
Tuenti release processTuenti release process
Tuenti release processTuenti
 
Tuenti - tu entidad
Tuenti -  tu entidadTuenti -  tu entidad
Tuenti - tu entidadTuenti
 
DTS s03e02 Handling the code
DTS s03e02 Handling the codeDTS s03e02 Handling the code
DTS s03e02 Handling the codeTuenti
 
DTS s03e04 Typing
DTS s03e04 TypingDTS s03e04 Typing
DTS s03e04 TypingTuenti
 
Tuenti Tech Teams. Frontend, Backend, Systems and more, working together
Tuenti Tech Teams. Frontend, Backend, Systems and more, working togetherTuenti Tech Teams. Frontend, Backend, Systems and more, working together
Tuenti Tech Teams. Frontend, Backend, Systems and more, working togetherTuenti
 
AJAX for Scalability
AJAX for ScalabilityAJAX for Scalability
AJAX for ScalabilityTuenti
 

Plus de Tuenti (10)

Tu: Telco 2.0 at FICOD 2011
Tu: Telco 2.0 at FICOD 2011Tu: Telco 2.0 at FICOD 2011
Tu: Telco 2.0 at FICOD 2011
 
Tuenti - de la idea a la web
Tuenti -  de la idea a la webTuenti -  de la idea a la web
Tuenti - de la idea a la web
 
Tuenti Mobile Development
Tuenti Mobile DevelopmentTuenti Mobile Development
Tuenti Mobile Development
 
Tuenti: Web Application Security
Tuenti: Web Application SecurityTuenti: Web Application Security
Tuenti: Web Application Security
 
Tuenti release process
Tuenti release processTuenti release process
Tuenti release process
 
Tuenti - tu entidad
Tuenti -  tu entidadTuenti -  tu entidad
Tuenti - tu entidad
 
DTS s03e02 Handling the code
DTS s03e02 Handling the codeDTS s03e02 Handling the code
DTS s03e02 Handling the code
 
DTS s03e04 Typing
DTS s03e04 TypingDTS s03e04 Typing
DTS s03e04 Typing
 
Tuenti Tech Teams. Frontend, Backend, Systems and more, working together
Tuenti Tech Teams. Frontend, Backend, Systems and more, working togetherTuenti Tech Teams. Frontend, Backend, Systems and more, working together
Tuenti Tech Teams. Frontend, Backend, Systems and more, working together
 
AJAX for Scalability
AJAX for ScalabilityAJAX for Scalability
AJAX for Scalability
 

Dernier

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Dernier (20)

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

Tuenti Release Workflow v1.1

  • 2. Agenda • Numbers • Release workflow • Tools
  • 3. Numbers • +13M users (~10,4M active users dec 2011) • +100 usage minutes / day (avg) • +400M chat messages / day • +4M photos uploaded / day (peaks) • +41,000M page views / month • +35K requests / sec (peaks) • +1,3K servers • +250 employees (~60% techies) • +15K files in the repositories • +10K Tests
  • 4. Release Workflow Branch Code Test Integrate Release Stabilize
  • 5. Release Workflow: Branch Branch Code Test Integrate Release Stabilize • Avg. 15 branches per release • Current record: 29 branches • Repository per functional area (be, fe, stats, …) • Avg. lines modified per release: 63K
  • 6. Release Workflow: Code + Test Branch Code Test Integrate Release Stabilize • Scrum (or at least Agile) • As TDD as possible • Labs • A/B Testing • PoCs • Dark launch
  • 7. Release Workflow: Integrate Branch Code Test Integrate Release Stabilize • Repo always available • Specific release date given by devops – Merge & wait for target • Only merge if 100% tests ok or specific approval • QA Regression & manual tests • Fix possible integration problems ASAP
  • 8. Release Workflow: Release Branch Code Test Integrate Release Stabilize • 3 releases per week – DevOps goal: All weekdays • Latest stable changeset from Integration taken previous working day morning • Release doc, pre-release meetings • Staging servers to test with live data
  • 9. Release Workflow: Stabilize Branch Code Test Integrate Release Stabilize • First code push: 8 AM – DevOps Goal: single push + release closed • Release window: 1-2 h – DevOps goal: < 30 minutes • Error stabilization or release rollback • Representatives from all involved teams
  • 10. Tools
  • 11. DVCS: Mercurial • http://mercurial.selenic.com/ • Syntax similar to SVN (our old system) • Easy API to plug our plugins and hooks • Cross-platform • Tuenti Addons: – Commit hooks to check syntax, push ticket #... • Problems: – Push/pulls through VPN are slow – Handling multiple repos still slow – Only one level of rollback!
  • 12. Issue Tracking: Trac • http://trac.edgewall.org/ • User Stories tasks + Bugs • Wiki (now also internal Google Sites) • Plugins and extensible • Tuenti Addons: – Master/Slave architecture – Tons of tweaks and source code integration hooks • Problems: – Slow, limited, code viewing sucks • Migration to JIRA planned
  • 13. Testing: PHPUnit • http://www.phpunit.de • Some caveats – Mocking just „works‟ – PHP process spawning PHP tests • Tuenti Addons: – Vastly improved mocking framework – Shell scripts that isolate test batteries – Better integration with Selenium • Problems: – Our current FEFW does not cope perfectly with PHPUnit/Selenium
  • 14. Testing: Selenium • http://seleniumhq.org/ • Running browser tests in FFox and IE • Tuenti Addons: – Custom build with some fixes • Problems: – Javascript handling/detection not perfect – AJAX far from optimal – IE runner is an iframe • Planned migration to Webdriver
  • 15. CI: Jenkins • http://jenkins-ci.org/ • Previously Hudson too • Specialized farm (master + 22 nodes) • Tuenti Addons: • Parallelization (up to 6 nodes) • Special reports • “Smart” runs (try first last failed tests, etc.) • Problems: • Browser tests slow (due to Selenium) • Unstable (mainly due to Selenium)
  • 16. Storage: MySQL • http://www.mysql.com/ | http://www.percona.com • Live site storage • Dev. env. storage – 1 DB per user (to run tests) – 1 shared DB (common faked data) • Clusters of master/slave DBs • Problems: – Slow when running tests – Shared dev DB has old-time inconsistencies
  • 17. Storage: Hadoop • http://hadoop.apache.org/ • Dedicated cluster • Pig scripts: Stats, other non-realtime data • HBase: Async. data storage • Hive: SQL-like querying • Problems: – Complex configuration for newcomers
  • 18. Caching: Memcached • http://memcached.org/ • Avg. DB querys/pageview: 0.3 • Dev. Behaviour == live behaviour • Tuenti Addons (https://github.com/tuenti): – UDP + multi-ports • Problems: – 32GB RAM / machine practical limit – Remember to warm-up data or MC will kill the DB!
  • 19. Configuration: Puppet • http://puppetlabs.com/ • Production machines • Jenkins nodes • VM management / Dev web servers config • Problems: – Wipes user config if not puppetized
  • 20. Search: Sphinx • http://sphinxsearch.com/ • Non-realtime (index based) • Very fast • Problems – Index re-generation on dev & test env. – Could be more friendly to add new data
  • 21. Build: Our build script • http://ant.apache.org/ • Localization • Minification + Bundling + Versioning • Statics deployment to CDNs • Fast: 2-3 minutes full build – Multithreading + parallelization • Allows partial, component based builds • Problems: – Under heavy CPU load, build time goes up :(
  • 22. Build: RSync • http://rsync.samba.org/ • Deployment of code (live & dev) • Sends deltas/diffs • Really fast
  • 23. Statics bundling: YUI • Less files == faster download & deploy • Big text file == better HTTP Gzip • HTML/JS/CSS Minification • Ultra fast build: ~4 seconds in Dev. • On demand JS loading! • Nice typical framework features • Wonderful & simple events system
  • 24. Statics bundling: YUI (II) • Tuenti Addons: – Caching builds – Line breaks each # characters (easier IE debugging) – CDNs handling • Problems: – Change in JS requires rebuilding even in dev. – Requires small migrations/changes in existing JS
  • 25. Chat Server: Ejabberd • http://www.ejabberd.im/ • Erlang XMPP (Jabber) server • 400M msgs/day, 1M concurrent users peak,… • 20 machines, ~5 instances per machine • Tuenti Addons: – Ejjabberd codebase tweaked (3,5x faster) – Protocol tweaks to optimize for our architecture • Problems: – Same behaviour dev/live is critical
  • 26. Compilation: HipHop • Migrating old code to fully support HipHop – With PHP 5.3 • Obvious speed improvements • Also nice for static code analysis

Notes de l'éditeur

  1. TDD: Backend nearer, FE hard once you enter visual tests (acceptance)
  2. Monday: Too much trafficFriday: Weekend next day, safer not to just in case something happens. (First redesign story)
  3. Shared Gdocs spreadsheet in which QA add bugs and engineers check and mark
  4. We use Singletons. PHP running PHP and thus keeping things between test batteries is the problem.We’re working on adding more testeability features to the FEFW
  5. Yes, we use Singletons. the problem is PHP running PHP and thus keeping things between test batteriesWe’re working on adding more testeability features to the FEFW
  6. We use XEN (http://xen.org/) for Windows virtualization on Jenkins buildsNodes are not virtualized because 20% less performance
  7. We use the Percona server instead of vanilla MySQLMock everything (unit/integration)Reuse data if possible (browser)
  8. Recommendation: Build one cluster, experiment, learn, use it. Then build another one better tunned with whatever you learned
  9. Explain the 0,3 WTF
  10. Indexed in [5,15] min normal scenario, worst case 1h max/limit
  11. Old was a SH + PHP non-multithreaded script
  12. JS &amp; CSS
  13. JS &amp; CSS
  14. Solution: easy chat server tutorial. Now all Comms team engineers have their own VM chat server setupNow resharded to 2 chat clusters with LB and 12 machines each (thanks to improvements)