Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The release process at Tuenti

Tuenti
October 19, 2013

The release process at Tuenti

When a company grows up so fast like Tuenti did, the development and release process needs to evolve. From a manual, unstable, costly and prone to failures process, to a fully automated, fast, reliable and almost unattended one, being able to deploy or integrate code just clicking on a single button.

Tuenti

October 19, 2013
Tweet

More Decks by Tuenti

Other Decks in Technology

Transcript

  1. Tuenti 4 years ago, start-up way of life  Long

    releases, we woke up at 6am!  Many people involved  Deployment not reliable, unstable  Brittle tests  Nobody trusted the release  Bugfixing in live  Redeploying the bugfix  “Free commit bar”  Lot of effort  Risky  No repetitive  Stressful  Jenkins taking ages  Etc.
  2. DevOps culture  January 2012: DevOps team creation  We

    are:  Developers with sysadmins skills  Sysadmins with developers skills  Release management background  The ideas  Build a platform to allow developers to self-service envs and services  Provide a toolchain so developers can build, test, deploy and run systems  Coach teams to move to this model
  3. Developers start coding  Tuenti-in-a-box  Provides a self service

    full  development environment  Private  No shared resources  Vagrant + Puppet + VirtualBox  user@mylaptop:~# vagrant up  For us, better than classical server virtualization
  4. Jenkins tests  When  While developing  Before integrating

     How:  Early stages, fast & short run: ~18000 tests in 13 min  Latests stages, slow & full run: ~29000 tests in 90 min  Release stage, fast & full run: ~29000 tests in 42 min  What tests:  Unit, integration, system, browser, JavaScript,...
  5. Flow: integration pull request  Enqueues pull requests sent by

    developers  To process a pull request it does:  Create a temporary branch with the merge  Tell Jenkins to test it  If no tests failing, do the real merge  Otherwise, notify the developer and QA  Transition Jira tickets  Link Jira tickets
  6. Flow: release management  Click a Jira button, and Flow

    does:  Creates SCM release branch  Build & Deploy code to preproduction  Tell Jenkins to test that branch  Notify everyone involved  Transition Jira tickets  Link Jira tickets  QA tests a little bit  Release to staging  The users tests for us  Release go live!  Deployment to hundreds of servers takes less than a minute
  7. It's been a success  Now:  Almost no manual

    tasks  Developers throughput increased  Ageing of finished code not released greatly reduced  Fast reaction to product changes or bugs  Information transparency  How  Incremental changes, MVP (minimum viable product)  Evolved gradually  Did not involve rupture in processes
  8. Some figures and notes  3.21 production deployments per day

     67.64 preproduction deployments per day  7.19 pull requests per day  Releases takes about 1 hour  Almost unattended  Safe, reliable and revertible