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 Release Workflow: Branch Code Test Integrate Release Stabilize

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
 
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
 
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
 
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 Release Workflow: Branch Code Test Integrate Release Stabilize (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
 
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
 
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
 
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

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
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
 
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
 
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
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
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
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 

Recently uploaded (20)

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
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
 
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...
 
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...
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
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
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 

Release Workflow: Branch Code Test Integrate Release Stabilize

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