SlideShare a Scribd company logo
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

More Related Content

What's hot

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
Michael Kuehne-Schlinkert
 
Jenkins Pipelining and Gatling Integration
Jenkins Pipelining and  Gatling IntegrationJenkins Pipelining and  Gatling Integration
Jenkins Pipelining and Gatling Integration
Knoldus 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 Report
Sencha
 
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
Perrin Harkins
 
Introduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya SharmaIntroduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya Sharma
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
Pascal 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 Insight
Splunk
 
Trying Out Tomorrow’s WordPress Today
Trying Out Tomorrow’s WordPress TodayTrying Out Tomorrow’s WordPress Today
Trying Out Tomorrow’s WordPress Today
DrewAPicture
 
Perl Continous Integration
Perl Continous IntegrationPerl Continous Integration
Perl Continous Integration
Michael Peters
 
All of the thing about Postman
All of the thing about PostmanAll of the thing about Postman
All of the thing about Postman
Alihossein shahabi
 
Drupalcamp Simpletest
Drupalcamp SimpletestDrupalcamp Simpletest
Drupalcamp Simpletestlyricnz
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
Valentin Buryakov
 
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
Danylo 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, Sixt
DroidConTLV
 
Ui Testing with Ghost Inspector
Ui Testing with Ghost InspectorUi Testing with Ghost Inspector
Ui Testing with Ghost Inspector
Harvard Web Working Group
 
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 #WPLDN
Edmund Turbin
 
Production Ready WordPress - WC Utrecht 2017
Production Ready WordPress  - WC Utrecht 2017Production Ready WordPress  - WC Utrecht 2017
Production Ready WordPress - WC Utrecht 2017
Edmund Turbin
 

What's hot (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
 

Viewers also liked

Momentos
MomentosMomentos
Momentos
Joao Santos
 
BAR GRAPH
BAR GRAPHBAR GRAPH
BAR GRAPH
Kianna Navarrosa
 
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 slideshare
Yuval Yeret
 
Informatica tarea
Informatica tareaInformatica tarea
Informatica tarea
patriciodelacruz1967
 
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
John Citibois
 
XML simple Introduction
XML simple IntroductionXML simple Introduction
XML simple Introduction
alphap13
 
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 Technologist
heidihysell
 
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
 
Xna game development
Xna game developmentXna game development
Xna game development
chanakanakandala1993
 
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
PhRMA
 
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
The 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 2013
Samantha Noble
 
Emprendedor
EmprendedorEmprendedor
Emprendedor
claudia guillen
 
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 Picture
Tariq 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 Update
Office of HIV Planning
 

Viewers also liked (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
 

Similar to 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 Ecosystem
Yi-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 & Distribution
Stefan Schmidt
 
SOA with PHP and Symfony
SOA with PHP and SymfonySOA with PHP and Symfony
SOA with PHP and Symfony
MichalSchroeder
 
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 enterprise
Bert 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 Systems
SATOSHI TAGOMORI
 
Kubernetes Manchester - 6th December 2018
Kubernetes Manchester - 6th December 2018Kubernetes Manchester - 6th December 2018
Kubernetes Manchester - 6th December 2018
David Stockton
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcached
Jurriaan Persyn
 
Realtime traffic analyser
Realtime traffic analyserRealtime traffic analyser
Realtime traffic analyser
Alex 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
 
manage databases like codebases
manage databases like codebasesmanage databases like codebases
manage databases like codebases
DBmaestro - Database DevOps
 
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
Howard 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 Microservices
yinonavraham
 
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 Control
indiver
 

Similar to 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
 

More from 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 2011
Tuenti
 
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 Development
Tuenti
 
Tuenti: Web Application Security
Tuenti: Web Application SecurityTuenti: Web Application Security
Tuenti: Web Application Security
Tuenti
 
Tuenti release process
Tuenti release processTuenti release process
Tuenti release processTuenti
 
Tuenti - tu entidad
Tuenti -  tu entidadTuenti -  tu entidad
Tuenti - tu entidad
Tuenti
 
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 Typing
Tuenti
 
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
 

More from 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
 

Recently uploaded

FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 

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

Editor's Notes

  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)