SlideShare a Scribd company logo
1 of 30
Release Workflow


Diego Muñoz
diego@tuenti.com
http://twitter.com/Kartones
Agenda
•   Some numbers
•   Release workflow
•   Some tools
•   Some rants
Some numbers
•   +12M users
•   +100 usage minutes / day (avg)
•   +200M chat messages / day
•   +4M photos uploaded / day (peaks)
•   +40,000M page views / month
•   +35K requests / sec (peaks)
•   +1K servers
•   +250 employees (~60% techies)
•   +15K files in the repositories
•   +8K Tests
Release Workflow



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




•   8-12 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
•   Only merge with 100% tests ok / TFW approval
•   QA Regression & manual tests
•   Fix possible merge/integration problems ASAP
Release Workflow: Release
Branch    Code     Test    Integrate   Release   Stabilize




• 2 releases per week (tuesdays & thursdays)
• Latest stable changeset from Integration taken
  previous day 11 AM
• Release doc, pre-release meetings
• Staging servers to test with live data
• We are searching for a Release Manager ;)
Release Workflow: Stabilize
Branch     Code     Test    Integrate   Release   Stabilize




•   First code push: 8 AM
•   Release window: 3 hours (normal scenario)
•   Live error stabilization or rollback
•   Representatives from all involved teams
Some tools
DVCS: Mercurial
•   http://mercurial.selenic.com/
•   Syntax similar to SVN (our old system)
•   Easy API to plug our plugins and hooks
•   100% cross-platform (now Git also but not before)
• Commit hooks to check syntax, coding standards…
• Bottleneck:
    – Push/pulls through VPN are slow
Issue Tracking: Trac
•   http://trac.edgewall.org/
•   User Stories tasks
•   Bugs
•   Wiki
•   Plugins and extensible
•   Bottleneck: Sometimes slow, code viewing not
    optimal
Testing: PHPUnit
• http://www.phpunit.de
• Some caveats
  – Mocking just ‘works’
  – PHP process spawning PHP tests
• We have:
  – Vastly improved mocking framework
  – Shell scripts that isolate test batteries
  – Better integration with Selenium
• Bottleneck: Our current FEFW does not cope
  perfectly with PHPUnit/Selenium
CI: Jenkins
• http://jenkins-ci.org/
• Previously Hudson too
• CI servers farm
• Parallelization, plugins, special reports, custom
  tunnings
• Bottleneck: Acceptance tests
Storage: MySQL
• Live site storage
• Dev. env. storage
  – 1 DB per user (to run tests)
  – 1 shared DB (common faked data)
• Bottleneck: Slow when running tests
File copying: RSync
•   http://rsync.samba.org/
•   Deployment of code (live & dev)
•   Sends deltas/diffs
•   Really fast
Configuration: Puppet
•   http://puppetlabs.com/
•   Production machines
•   Jenkins nodes
•   VM management / Dev web servers config
Stats: Hadoop
•   http://hadoop.apache.org/
•   Dedicated cluster
•   HBase
•   Hive
VirtualBox
•   https://www.virtualbox.org/
•   Multi-platform
•   Accurate and fast emulation of Windows OS
•   Bottleneck: RAM of host machine
Search: Sphinx
•   http://sphinxsearch.com/
•   Non-realtime (index based)
•   Very fast
•   Bottleneck: Index generation on dev & test env.
Caching: Memcached
• http://memcached.org/
• Dev. Behaviour == live behaviour
• Tuenti has sent improvements & patches
  – UDP patch, random ports
• Bottleneck: 32GB RAM / machine practical limit
Some rants
Statics versioning: The good
• Browser caching problems gone
• Transparent & easy to use by developers
• Easy to deactivate for testing
Statics versioning: The bad
• Dangerous if not careful with non-
  production ready files
• Waste of bandwith
• No dev versioning == browser caching
  problems
File bundling: The good
•   Less files == faster download & deploy
•   Big text file == better HTTP Gzip
•   Build time only (no need for dev)
•   Combines perfectly with minification and
    versioning
File bundling: The bad
• Firebug debugging harder (big single files)
• One syntax error breaks multiple bundled files
  – Minimized + Bundled + Error == Real pain
• Hierarchy needed to avoid bundling multiple
  times same files.
  – Web, external/public page, mobile…
• Dev. only errors !
Our Build script
•   Localization
•   Minification
•   Bundling
•   Versioning
•   Statics deployment to CDNs
•   Deltas of changes or full build
•   …
•   Bottleneck: Build time
HipHop
• Migrating old code to fully support HipHop
  – With PHP 5.3
• Obvious speed improvements
• Also nice for static code analysis
Our Chat
•   Erlang (server) + Javascript (client)
•   Jabber protocol
•   Ejjabberd tweaked (3,5x faster)
•   200M msgs/day, 1M concurrent users peak,…
•   20 machines, ~5 instances per machine
•   Same behaviour dev/live is critical

• We’re searching for Erlang experts ;)
exit(0);


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

More Related Content

What's hot

CFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful CodeCFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful Codeindiver
 
Rsyslog version naming (v8.6.0+)
Rsyslog version naming (v8.6.0+)Rsyslog version naming (v8.6.0+)
Rsyslog version naming (v8.6.0+)Rainer Gerhards
 
RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016Ortus Solutions, Corp
 
Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9JBUG London
 
Continuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as CodeContinuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as CodeSascha Möllering
 
Testing Below the Application
Testing Below the ApplicationTesting Below the Application
Testing Below the ApplicationAsh Winter
 
Debugging your Way through .NET with Visual Studio 2015
Debugging your Way through .NET with Visual Studio 2015Debugging your Way through .NET with Visual Studio 2015
Debugging your Way through .NET with Visual Studio 2015Ido Flatow
 
Celery
CeleryCelery
CeleryYipit
 
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...Igalia
 
Command box, Package Manager, Automation, REPL
Command box, Package Manager, Automation, REPLCommand box, Package Manager, Automation, REPL
Command box, Package Manager, Automation, REPLColdFusionConference
 
High Performance Systems in Go - GopherCon 2014
High Performance Systems in Go - GopherCon 2014High Performance Systems in Go - GopherCon 2014
High Performance Systems in Go - GopherCon 2014Derek Collison
 
CBDW2014 - Down the RabbitMQ hole with ColdFusion
CBDW2014 - Down the RabbitMQ hole with ColdFusionCBDW2014 - Down the RabbitMQ hole with ColdFusion
CBDW2014 - Down the RabbitMQ hole with ColdFusionOrtus Solutions, Corp
 
They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworksKirk Madera
 
美团点评技术沙龙08 - 分布式监控系统实践
美团点评技术沙龙08 - 分布式监控系统实践美团点评技术沙龙08 - 分布式监控系统实践
美团点评技术沙龙08 - 分布式监控系统实践美团点评技术团队
 
RSYSLOG v8 improvements and how to write plugins in any language.
RSYSLOG v8 improvements and how to write plugins in any language.RSYSLOG v8 improvements and how to write plugins in any language.
RSYSLOG v8 improvements and how to write plugins in any language.Rainer Gerhards
 
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web ScaleSaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web ScaleSaltStack
 

What's hot (20)

CFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful CodeCFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful Code
 
Rsyslog version naming (v8.6.0+)
Rsyslog version naming (v8.6.0+)Rsyslog version naming (v8.6.0+)
Rsyslog version naming (v8.6.0+)
 
RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016
 
Evolution of deploy.sh
Evolution of deploy.shEvolution of deploy.sh
Evolution of deploy.sh
 
Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9
 
Continuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as CodeContinuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as Code
 
Testing Below the Application
Testing Below the ApplicationTesting Below the Application
Testing Below the Application
 
Debugging your Way through .NET with Visual Studio 2015
Debugging your Way through .NET with Visual Studio 2015Debugging your Way through .NET with Visual Studio 2015
Debugging your Way through .NET with Visual Studio 2015
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Celery
CeleryCelery
Celery
 
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
 
Command box, Package Manager, Automation, REPL
Command box, Package Manager, Automation, REPLCommand box, Package Manager, Automation, REPL
Command box, Package Manager, Automation, REPL
 
High Performance Systems in Go - GopherCon 2014
High Performance Systems in Go - GopherCon 2014High Performance Systems in Go - GopherCon 2014
High Performance Systems in Go - GopherCon 2014
 
CBDW2014 - Down the RabbitMQ hole with ColdFusion
CBDW2014 - Down the RabbitMQ hole with ColdFusionCBDW2014 - Down the RabbitMQ hole with ColdFusion
CBDW2014 - Down the RabbitMQ hole with ColdFusion
 
Command box
Command boxCommand box
Command box
 
They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworks
 
美团点评技术沙龙08 - 分布式监控系统实践
美团点评技术沙龙08 - 分布式监控系统实践美团点评技术沙龙08 - 分布式监控系统实践
美团点评技术沙龙08 - 分布式监控系统实践
 
RSYSLOG v8 improvements and how to write plugins in any language.
RSYSLOG v8 improvements and how to write plugins in any language.RSYSLOG v8 improvements and how to write plugins in any language.
RSYSLOG v8 improvements and how to write plugins in any language.
 
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web ScaleSaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
 
Keep Applications Online
Keep Applications OnlineKeep Applications Online
Keep Applications Online
 

Viewers also liked

Poems about Christmas
Poems about ChristmasPoems about Christmas
Poems about Christmasmelita23
 
Навчальна програма гуртка моделювання одягу
Навчальна програма гуртка моделювання одягуНавчальна програма гуртка моделювання одягу
Навчальна програма гуртка моделювання одягуЛюбомир Пенцко
 
Materi edukatif pada pasien di klinik
Materi edukatif pada pasien di klinikMateri edukatif pada pasien di klinik
Materi edukatif pada pasien di klinikZikri Afdal
 
Публікації, та скан копії статей
Публікації, та скан копії статейПублікації, та скан копії статей
Публікації, та скан копії статейЛюбомир Пенцко
 
Hospital
HospitalHospital
Hospitaleagain
 
Ad words certified
Ad words certifiedAd words certified
Ad words certifiedTECOS
 
Seminário Modelos de Competitividade Internacional e Inovação
Seminário Modelos de Competitividade Internacional e InovaçãoSeminário Modelos de Competitividade Internacional e Inovação
Seminário Modelos de Competitividade Internacional e InovaçãoEXPEDITO SILVA
 
As I jumped off the building
As I jumped off the buildingAs I jumped off the building
As I jumped off the buildingMei Su
 
UncuentobonitodePauloCoelho
UncuentobonitodePauloCoelhoUncuentobonitodePauloCoelho
UncuentobonitodePauloCoelhoeagain
 
Summer internship
Summer internshipSummer internship
Summer internshipTECOS
 
Avalos daniel ensayo sistemas_operativos (1)
Avalos daniel  ensayo sistemas_operativos (1)Avalos daniel  ensayo sistemas_operativos (1)
Avalos daniel ensayo sistemas_operativos (1)Daniel Abdo
 
Eames Lounge Chairs
Eames Lounge ChairsEames Lounge Chairs
Eames Lounge Chairsmytrisazmol
 
Disney
DisneyDisney
Disneyeagain
 
LeanKit Webinar: Evolving Your Daily Standup with Kanban by Brendan Wovchko
LeanKit Webinar: Evolving Your Daily Standup with Kanban by Brendan WovchkoLeanKit Webinar: Evolving Your Daily Standup with Kanban by Brendan Wovchko
LeanKit Webinar: Evolving Your Daily Standup with Kanban by Brendan WovchkoLeanKit
 
Economia Global & Competitividade - MBA Lean Manufacturing CIMATEC
Economia Global & Competitividade - MBA Lean Manufacturing CIMATECEconomia Global & Competitividade - MBA Lean Manufacturing CIMATEC
Economia Global & Competitividade - MBA Lean Manufacturing CIMATECEXPEDITO SILVA
 

Viewers also liked (20)

Poems about Christmas
Poems about ChristmasPoems about Christmas
Poems about Christmas
 
Навчальна програма гуртка моделювання одягу
Навчальна програма гуртка моделювання одягуНавчальна програма гуртка моделювання одягу
Навчальна програма гуртка моделювання одягу
 
Materi edukatif pada pasien di klinik
Materi edukatif pada pasien di klinikMateri edukatif pada pasien di klinik
Materi edukatif pada pasien di klinik
 
Публікації, та скан копії статей
Публікації, та скан копії статейПублікації, та скан копії статей
Публікації, та скан копії статей
 
Casa Barragán
Casa BarragánCasa Barragán
Casa Barragán
 
Hospital
HospitalHospital
Hospital
 
Ad words certified
Ad words certifiedAd words certified
Ad words certified
 
Special
SpecialSpecial
Special
 
Seminário Modelos de Competitividade Internacional e Inovação
Seminário Modelos de Competitividade Internacional e InovaçãoSeminário Modelos de Competitividade Internacional e Inovação
Seminário Modelos de Competitividade Internacional e Inovação
 
As I jumped off the building
As I jumped off the buildingAs I jumped off the building
As I jumped off the building
 
UncuentobonitodePauloCoelho
UncuentobonitodePauloCoelhoUncuentobonitodePauloCoelho
UncuentobonitodePauloCoelho
 
Resume
ResumeResume
Resume
 
Summer internship
Summer internshipSummer internship
Summer internship
 
Rajkumar Balathandapani
Rajkumar BalathandapaniRajkumar Balathandapani
Rajkumar Balathandapani
 
Avalos daniel ensayo sistemas_operativos (1)
Avalos daniel  ensayo sistemas_operativos (1)Avalos daniel  ensayo sistemas_operativos (1)
Avalos daniel ensayo sistemas_operativos (1)
 
Eames Lounge Chairs
Eames Lounge ChairsEames Lounge Chairs
Eames Lounge Chairs
 
Disney
DisneyDisney
Disney
 
LeanKit Webinar: Evolving Your Daily Standup with Kanban by Brendan Wovchko
LeanKit Webinar: Evolving Your Daily Standup with Kanban by Brendan WovchkoLeanKit Webinar: Evolving Your Daily Standup with Kanban by Brendan Wovchko
LeanKit Webinar: Evolving Your Daily Standup with Kanban by Brendan Wovchko
 
Economia Global & Competitividade - MBA Lean Manufacturing CIMATEC
Economia Global & Competitividade - MBA Lean Manufacturing CIMATECEconomia Global & Competitividade - MBA Lean Manufacturing CIMATEC
Economia Global & Competitividade - MBA Lean Manufacturing CIMATEC
 
Como diminuir a barriga
Como diminuir a barrigaComo diminuir a barriga
Como diminuir a barriga
 

Similar to Tuenti Release Workflow

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
 
Delphix and DBmaestro
Delphix and DBmaestroDelphix and DBmaestro
Delphix and DBmaestroKyle Hailey
 
Version Control With Subversion
Version Control With SubversionVersion Control With Subversion
Version Control With SubversionSamnang Chhun
 
MyHeritage - QA Automations in a Continuous Deployment environment
MyHeritage -  QA Automations in a Continuous Deployment environmentMyHeritage -  QA Automations in a Continuous Deployment environment
MyHeritage - QA Automations in a Continuous Deployment environmentMatanGoren
 
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
 
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
 
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
 
MyHeritage - End 2 End testing Infra
MyHeritage - End 2 End testing InfraMyHeritage - End 2 End testing Infra
MyHeritage - End 2 End testing InfraMatanGoren
 
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit EuropeAutomation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit EuropeAppDynamics
 
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
DevOpsGuys - DevOps Automation - The Good, The Bad and The UglyDevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
DevOpsGuys - DevOps Automation - The Good, The Bad and The UglyDevOpsGroup
 
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
 
Spring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionSpring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionStefan Schmidt
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal infoSynapseindiappsdevelopment
 
Picnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable applicationPicnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable applicationNick Josevski
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchHoward Greenberg
 

Similar to Tuenti Release Workflow (20)

Ship It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemShip It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails Ecosystem
 
Delphix and DBmaestro
Delphix and DBmaestroDelphix and DBmaestro
Delphix and DBmaestro
 
Migrating big data
Migrating big dataMigrating big data
Migrating big data
 
manage databases like codebases
manage databases like codebasesmanage databases like codebases
manage databases like codebases
 
Version Control With Subversion
Version Control With SubversionVersion Control With Subversion
Version Control With Subversion
 
MyHeritage - QA Automations in a Continuous Deployment environment
MyHeritage -  QA Automations in a Continuous Deployment environmentMyHeritage -  QA Automations in a Continuous Deployment environment
MyHeritage - QA Automations in a Continuous Deployment environment
 
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 ...
 
Taking Database Development to the 21st Century
Taking Database Development to the 21st CenturyTaking Database Development to the 21st Century
Taking Database Development to the 21st Century
 
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
 
Version Control meets Database Control
Version Control meets Database ControlVersion Control meets Database Control
Version Control meets Database Control
 
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
 
MyHeritage - End 2 End testing Infra
MyHeritage - End 2 End testing InfraMyHeritage - End 2 End testing Infra
MyHeritage - End 2 End testing Infra
 
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit EuropeAutomation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
 
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
DevOpsGuys - DevOps Automation - The Good, The Bad and The UglyDevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
 
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)
 
Spring Roo Add-On Development & Distribution
Spring Roo Add-On Development & DistributionSpring Roo Add-On Development & Distribution
Spring Roo Add-On Development & Distribution
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal info
 
Picnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable applicationPicnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable application
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 

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

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

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 

Recently uploaded (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

Tuenti Release Workflow

  • 2. Agenda • Some numbers • Release workflow • Some tools • Some rants
  • 3. Some numbers • +12M users • +100 usage minutes / day (avg) • +200M chat messages / day • +4M photos uploaded / day (peaks) • +40,000M page views / month • +35K requests / sec (peaks) • +1K servers • +250 employees (~60% techies) • +15K files in the repositories • +8K Tests
  • 4. Release Workflow Branch Code Test Integrate Release Stabilize
  • 5. Release Workflow: Branch Branch Code Test Integrate Release Stabilize • 8-12 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 • Only merge with 100% tests ok / TFW approval • QA Regression & manual tests • Fix possible merge/integration problems ASAP
  • 8. Release Workflow: Release Branch Code Test Integrate Release Stabilize • 2 releases per week (tuesdays & thursdays) • Latest stable changeset from Integration taken previous day 11 AM • Release doc, pre-release meetings • Staging servers to test with live data • We are searching for a Release Manager ;)
  • 9. Release Workflow: Stabilize Branch Code Test Integrate Release Stabilize • First code push: 8 AM • Release window: 3 hours (normal scenario) • Live error stabilization or rollback • Representatives from all involved teams
  • 11. DVCS: Mercurial • http://mercurial.selenic.com/ • Syntax similar to SVN (our old system) • Easy API to plug our plugins and hooks • 100% cross-platform (now Git also but not before) • Commit hooks to check syntax, coding standards… • Bottleneck: – Push/pulls through VPN are slow
  • 12. Issue Tracking: Trac • http://trac.edgewall.org/ • User Stories tasks • Bugs • Wiki • Plugins and extensible • Bottleneck: Sometimes slow, code viewing not optimal
  • 13. Testing: PHPUnit • http://www.phpunit.de • Some caveats – Mocking just ‘works’ – PHP process spawning PHP tests • We have: – Vastly improved mocking framework – Shell scripts that isolate test batteries – Better integration with Selenium • Bottleneck: Our current FEFW does not cope perfectly with PHPUnit/Selenium
  • 14. CI: Jenkins • http://jenkins-ci.org/ • Previously Hudson too • CI servers farm • Parallelization, plugins, special reports, custom tunnings • Bottleneck: Acceptance tests
  • 15. Storage: MySQL • Live site storage • Dev. env. storage – 1 DB per user (to run tests) – 1 shared DB (common faked data) • Bottleneck: Slow when running tests
  • 16. File copying: RSync • http://rsync.samba.org/ • Deployment of code (live & dev) • Sends deltas/diffs • Really fast
  • 17. Configuration: Puppet • http://puppetlabs.com/ • Production machines • Jenkins nodes • VM management / Dev web servers config
  • 18. Stats: Hadoop • http://hadoop.apache.org/ • Dedicated cluster • HBase • Hive
  • 19. VirtualBox • https://www.virtualbox.org/ • Multi-platform • Accurate and fast emulation of Windows OS • Bottleneck: RAM of host machine
  • 20. Search: Sphinx • http://sphinxsearch.com/ • Non-realtime (index based) • Very fast • Bottleneck: Index generation on dev & test env.
  • 21. Caching: Memcached • http://memcached.org/ • Dev. Behaviour == live behaviour • Tuenti has sent improvements & patches – UDP patch, random ports • Bottleneck: 32GB RAM / machine practical limit
  • 23. Statics versioning: The good • Browser caching problems gone • Transparent & easy to use by developers • Easy to deactivate for testing
  • 24. Statics versioning: The bad • Dangerous if not careful with non- production ready files • Waste of bandwith • No dev versioning == browser caching problems
  • 25. File bundling: The good • Less files == faster download & deploy • Big text file == better HTTP Gzip • Build time only (no need for dev) • Combines perfectly with minification and versioning
  • 26. File bundling: The bad • Firebug debugging harder (big single files) • One syntax error breaks multiple bundled files – Minimized + Bundled + Error == Real pain • Hierarchy needed to avoid bundling multiple times same files. – Web, external/public page, mobile… • Dev. only errors !
  • 27. Our Build script • Localization • Minification • Bundling • Versioning • Statics deployment to CDNs • Deltas of changes or full build • … • Bottleneck: Build time
  • 28. HipHop • Migrating old code to fully support HipHop – With PHP 5.3 • Obvious speed improvements • Also nice for static code analysis
  • 29. Our Chat • Erlang (server) + Javascript (client) • Jabber protocol • Ejjabberd tweaked (3,5x faster) • 200M msgs/day, 1M concurrent users peak,… • 20 machines, ~5 instances per machine • Same behaviour dev/live is critical • We’re searching for Erlang experts ;)

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. Partially due to our architecture: We’re working on master-slave architectures to make writes on master but reads on slaves, failover…
  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. Mock everything (unit/integration)Reuse data if possible (acceptance)
  8. Now all dev laptops have 8GB RAM and old ones can ask for an upgrade
  9. Indexed in 5-15 min normal scenario, worst case 1h max/limit
  10. UDP + random ports instead of TCP biggest win
  11. JS & CSS
  12. IE 32 CSS files limitation best example of dev. Only problemsSplit in multiple lines instead of just one (ease IE debugging)
  13. Migration from single SH + PHP script to Ant parallelized script almost done. Build time: 1 minute!