SlideShare a Scribd company logo
1 of 21
Shipping for
mobile at Spotify
How we implement a release process for Spotify clients that allows for releasing
predictably with quality every two weeks.
Henrik Österdahl Djurfelter, henka@spotify.com (PO, Android Client
infrastructure, release publishing and test infrastructure)
About me
Background in JVM technology
Various positions at Spotify, including development
Currently leading Android client infrastructure squad
About Spotify clients
Clients exist for Android, iOS, Mac OS X, Windows
Key characteristics: Platform-native UI logic, most views backend-controlled,
shares some C++ code between clients
Clients exist for embedded and other smaller platforms
Releases Android Feb 2015-May 2016
Started enforcing
cancellation policy
Release awareness
Agenda
Predictability trumps feature set
Client releases
Following up on quality
Development tooling
Predictability
trumps
feature set
Predictability trumps feature set
Very important insight below:
Our belief: Need to choose two of predictable delivery date,
feature set, quality
We chose predictable delivery date and quality
Client
releases
Client releases - topics
Bi-weekly release trains: Our way of releasing predictably on time
Release types: Early feedback means early fixes, less surprises
Release blocking bugs: Prioritizing between quality and feature set
Bi-weekly release trains
Spotify clients are cut on a fixed schedule: FC every two weeks
Schedule determines feature set: Complete features get enabled
Release branch accepts fixes for blockers, only
Goal is enabling true Continuous Delivery: Allow releasing master
Release types
Nightly: Distributed to employees everyday
Beta: Distributed to select users after FC, before live release
Production / Live: THE release, to all users
Release blocking bugs
Release process defines three categories of bugs
P1: Blocking dev and/or testing, fix now
P2: Blocking release, fix now but after P1
Other: Non-release blocking, fix at your convenience
Bug reports can come from anywhere
Manual testing, automated testing, employees in general
Release blocking bugs (cont’d.)
Fixes for P1 or P2 bugs go to the release branch
Because they are release blocking, should have associated regression tests
Fixes for lower prio bugs go to the master branch
Want to keep risk on release branch as small as possible
Don’t game the system!
Pro Tip 1: Prioritizing work
1. Deal with live incidents
2. Deal with blocking bugs on the release branch
3. Deal with blocking bugs on master branch
4. Other development work and lower prio bugs
Optimize for product success rather than individual
development team success!
Pro Tip 2: Know your bug situation
Monitor bugs in your features
Monitor tests for your features
Triage and plan daily
Following
up on
quality
Crash monitoring
We monitor crashes for all three release stages
Top crashes are likely to show up in bigger numbers as
we hit each release stage → report and fix early!
Report and fix top crashes for every release, to make sure
to improve over time
Development
tooling
Development tooling
GitHub Enterprise and TeamCity
GitHub Enterprise hosts source code and pull requests
Merging allowed only after CI test runs report green and manual reviewer accepts
Investigate red results, don’t blindly retrigger. Accept no flakiness!
Build system performance
No queues
PR builds are quick, <10 min for Android
Questions?

More Related Content

What's hot

От хаоса к автоматизации тестирования на примере Backend
От хаоса к автоматизации тестирования на примере BackendОт хаоса к автоматизации тестирования на примере Backend
От хаоса к автоматизации тестирования на примере Backend
COMAQA.BY
 
Using Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health NewUsing Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health New
bartlowe
 

What's hot (20)

How to Upgrade to the Newest Shiniest Django Version
How to Upgrade to the Newest Shiniest Django VersionHow to Upgrade to the Newest Shiniest Django Version
How to Upgrade to the Newest Shiniest Django Version
 
I Love APIs 2015: Getting **IT Done Workshop
I Love APIs 2015: Getting **IT Done WorkshopI Love APIs 2015: Getting **IT Done Workshop
I Love APIs 2015: Getting **IT Done Workshop
 
Automated Testing at The Speed of Headless by Alissa Lydon and Samantha Coffman
Automated Testing at The Speed of Headless by Alissa Lydon and Samantha CoffmanAutomated Testing at The Speed of Headless by Alissa Lydon and Samantha Coffman
Automated Testing at The Speed of Headless by Alissa Lydon and Samantha Coffman
 
File hippo
File hippoFile hippo
File hippo
 
Manual testing - Introduction to Manual Software testing
Manual testing - Introduction to Manual Software testingManual testing - Introduction to Manual Software testing
Manual testing - Introduction to Manual Software testing
 
A year of SonarQube and TFS/VSTS
A year of SonarQube and TFS/VSTSA year of SonarQube and TFS/VSTS
A year of SonarQube and TFS/VSTS
 
Open source software testing
Open source  software testingOpen source  software testing
Open source software testing
 
Release This! Tools for a Smooth Release Cycle
Release This! Tools for a Smooth Release CycleRelease This! Tools for a Smooth Release Cycle
Release This! Tools for a Smooth Release Cycle
 
How to Measure Success in Continuous Testing by Fernando Vidal and Amir Rozen...
How to Measure Success in Continuous Testing by Fernando Vidal and Amir Rozen...How to Measure Success in Continuous Testing by Fernando Vidal and Amir Rozen...
How to Measure Success in Continuous Testing by Fernando Vidal and Amir Rozen...
 
CI with TFS
CI with TFSCI with TFS
CI with TFS
 
AutoDevBot API Monitoring
AutoDevBot API MonitoringAutoDevBot API Monitoring
AutoDevBot API Monitoring
 
SonarQube - The leading platform for Continuous Code Quality
SonarQube - The leading platform for Continuous Code QualitySonarQube - The leading platform for Continuous Code Quality
SonarQube - The leading platform for Continuous Code Quality
 
Functional & Performance Test Automation with CI
Functional & Performance Test Automation with CI Functional & Performance Test Automation with CI
Functional & Performance Test Automation with CI
 
Software testing tools
Software testing toolsSoftware testing tools
Software testing tools
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Evernote release process
Evernote release processEvernote release process
Evernote release process
 
Software testing tools
Software testing toolsSoftware testing tools
Software testing tools
 
Code review process with JetBrains UpSource
Code review process with JetBrains UpSourceCode review process with JetBrains UpSource
Code review process with JetBrains UpSource
 
От хаоса к автоматизации тестирования на примере Backend
От хаоса к автоматизации тестирования на примере BackendОт хаоса к автоматизации тестирования на примере Backend
От хаоса к автоматизации тестирования на примере Backend
 
Using Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health NewUsing Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health New
 

Similar to Shipping for mobile at Spotify

Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineering
gaoliang641
 
Unstoppable releases with kanban
Unstoppable releases with kanbanUnstoppable releases with kanban
Unstoppable releases with kanban
Andrii Shumada
 
Improve Development Process with Open Source Software
Improve Development Process with Open Source SoftwareImprove Development Process with Open Source Software
Improve Development Process with Open Source Software
elliando dias
 
6 basic steps of software development process
6 basic steps of software development process6 basic steps of software development process
6 basic steps of software development process
Riant Soft
 

Similar to Shipping for mobile at Spotify (20)

Code campiasi scm-project-gabriel-cristescu-ditech
Code campiasi scm-project-gabriel-cristescu-ditechCode campiasi scm-project-gabriel-cristescu-ditech
Code campiasi scm-project-gabriel-cristescu-ditech
 
Defect Prevention & Predictive Analytics - XBOSoft Webinar
Defect Prevention & Predictive Analytics - XBOSoft WebinarDefect Prevention & Predictive Analytics - XBOSoft Webinar
Defect Prevention & Predictive Analytics - XBOSoft Webinar
 
Rapid software testing and conformance with static code analysis
Rapid software testing and conformance with static code analysisRapid software testing and conformance with static code analysis
Rapid software testing and conformance with static code analysis
 
Release iOS apps at scale
Release iOS apps at scaleRelease iOS apps at scale
Release iOS apps at scale
 
PyCon 9: Continuous Delivery starts at your Development Dnvironment
PyCon 9: Continuous Delivery starts at your Development DnvironmentPyCon 9: Continuous Delivery starts at your Development Dnvironment
PyCon 9: Continuous Delivery starts at your Development Dnvironment
 
Continuous testing at scale
Continuous testing at scaleContinuous testing at scale
Continuous testing at scale
 
Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineering
 
Continuous Integration Practices
Continuous Integration Practices Continuous Integration Practices
Continuous Integration Practices
 
Continuous integration practices to improve the software quality
Continuous integration practices to improve the software qualityContinuous integration practices to improve the software quality
Continuous integration practices to improve the software quality
 
Agile & DevOps - It's all about project success
Agile & DevOps - It's all about project successAgile & DevOps - It's all about project success
Agile & DevOps - It's all about project success
 
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar SeriesGetting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
 
Introducing Continuous Delivery in the Enterprise
Introducing Continuous Delivery in the EnterpriseIntroducing Continuous Delivery in the Enterprise
Introducing Continuous Delivery in the Enterprise
 
Whats In Your QA Tool Belt?
Whats In Your QA Tool Belt?Whats In Your QA Tool Belt?
Whats In Your QA Tool Belt?
 
Unstoppable releases with kanban
Unstoppable releases with kanbanUnstoppable releases with kanban
Unstoppable releases with kanban
 
Improve Development Process with Open Source Software
Improve Development Process with Open Source SoftwareImprove Development Process with Open Source Software
Improve Development Process with Open Source Software
 
OMSOFTWARE NEW Service
OMSOFTWARE NEW ServiceOMSOFTWARE NEW Service
OMSOFTWARE NEW Service
 
Automated release notes, app for Jira - quick introduction
Automated release notes, app for Jira - quick introductionAutomated release notes, app for Jira - quick introduction
Automated release notes, app for Jira - quick introduction
 
00.pdf
00.pdf00.pdf
00.pdf
 
Beginner guide-to-software-testing
Beginner guide-to-software-testingBeginner guide-to-software-testing
Beginner guide-to-software-testing
 
6 basic steps of software development process
6 basic steps of software development process6 basic steps of software development process
6 basic steps of software development process
 

Recently uploaded

Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Lisi Hocke
 

Recently uploaded (20)

Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
 
Effective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeConEffective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeCon
 
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
 
BusinessGPT - Security and Governance for Generative AI
BusinessGPT  - Security and Governance for Generative AIBusinessGPT  - Security and Governance for Generative AI
BusinessGPT - Security and Governance for Generative AI
 
From Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST APIFrom Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST API
 
Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...
 
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit MilanWorkshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
 
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
 
Your Ultimate Web Studio for Streaming Anywhere | Evmux
Your Ultimate Web Studio for Streaming Anywhere | EvmuxYour Ultimate Web Studio for Streaming Anywhere | Evmux
Your Ultimate Web Studio for Streaming Anywhere | Evmux
 
Lessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdfLessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdf
 
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
 
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale IbridaUNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
 
Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024
 
The Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationThe Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test Automation
 
From Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptxFrom Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptx
 
Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...
Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...
Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...
 
Community is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletCommunity is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea Goulet
 
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
 
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
 
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
 

Shipping for mobile at Spotify

  • 1. Shipping for mobile at Spotify How we implement a release process for Spotify clients that allows for releasing predictably with quality every two weeks. Henrik Österdahl Djurfelter, henka@spotify.com (PO, Android Client infrastructure, release publishing and test infrastructure)
  • 2. About me Background in JVM technology Various positions at Spotify, including development Currently leading Android client infrastructure squad
  • 3. About Spotify clients Clients exist for Android, iOS, Mac OS X, Windows Key characteristics: Platform-native UI logic, most views backend-controlled, shares some C++ code between clients Clients exist for embedded and other smaller platforms
  • 4. Releases Android Feb 2015-May 2016 Started enforcing cancellation policy
  • 6. Agenda Predictability trumps feature set Client releases Following up on quality Development tooling
  • 8. Predictability trumps feature set Very important insight below: Our belief: Need to choose two of predictable delivery date, feature set, quality We chose predictable delivery date and quality
  • 10. Client releases - topics Bi-weekly release trains: Our way of releasing predictably on time Release types: Early feedback means early fixes, less surprises Release blocking bugs: Prioritizing between quality and feature set
  • 11. Bi-weekly release trains Spotify clients are cut on a fixed schedule: FC every two weeks Schedule determines feature set: Complete features get enabled Release branch accepts fixes for blockers, only Goal is enabling true Continuous Delivery: Allow releasing master
  • 12. Release types Nightly: Distributed to employees everyday Beta: Distributed to select users after FC, before live release Production / Live: THE release, to all users
  • 13. Release blocking bugs Release process defines three categories of bugs P1: Blocking dev and/or testing, fix now P2: Blocking release, fix now but after P1 Other: Non-release blocking, fix at your convenience Bug reports can come from anywhere Manual testing, automated testing, employees in general
  • 14. Release blocking bugs (cont’d.) Fixes for P1 or P2 bugs go to the release branch Because they are release blocking, should have associated regression tests Fixes for lower prio bugs go to the master branch Want to keep risk on release branch as small as possible Don’t game the system!
  • 15. Pro Tip 1: Prioritizing work 1. Deal with live incidents 2. Deal with blocking bugs on the release branch 3. Deal with blocking bugs on master branch 4. Other development work and lower prio bugs Optimize for product success rather than individual development team success!
  • 16. Pro Tip 2: Know your bug situation Monitor bugs in your features Monitor tests for your features Triage and plan daily
  • 18. Crash monitoring We monitor crashes for all three release stages Top crashes are likely to show up in bigger numbers as we hit each release stage → report and fix early! Report and fix top crashes for every release, to make sure to improve over time
  • 20. Development tooling GitHub Enterprise and TeamCity GitHub Enterprise hosts source code and pull requests Merging allowed only after CI test runs report green and manual reviewer accepts Investigate red results, don’t blindly retrigger. Accept no flakiness! Build system performance No queues PR builds are quick, <10 min for Android