We're doing it live: A multi-method empirical study on continuous experimentation

Abstract Context Continuous experimentation guides development activities based on data collected on a subset of online users on a new experimental version of the software. It includes practices such as canary releases, gradual rollouts, dark launches, or A/B testing. Objective Unfortunately, our knowledge of continuous experimentation is currently primarily based on well-known and outspoken industrial leaders. To assess the actual state of practice in continuous experimentation, we conducted a mixed-method empirical study. Method In our empirical study consisting of four steps, we interviewed 31 developers or release engineers, and performed a survey that attracted 187 complete responses. We analyzed the resulting data using statistical analysis and open coding. Results Our results lead to several conclusions: (1) from a software architecture perspective, continuous experimentation is especially enabled by architectures that foster independently deployable services, such as microservices-based architectures; (2) from a developer perspective, experiments require extensive monitoring and analytics to discover runtime problems, consequently leading to developer on call policies and influencing the role and skill sets required by developers; and (3) from a process perspective, many organizations conduct experiments based on intuition rather than clear guidelines and robust statistics. Conclusion Our findings show that more principled and structured approaches for release decision making are needed, striving for highly automated, systematic, and data- and hypothesis-driven deployment and experimentation.

[1]  Premkumar T. Devanbu,et al.  Quality and productivity outcomes relating to continuous integration in GitHub , 2015, ESEC/SIGSOFT FSE.

[2]  Laurie A. Williams,et al.  Characterizing Experimentation in Continuous Deployment: A Case Study on Bing , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering: Software Engineering in Practice Track (ICSE-SEIP).

[3]  Eric Helms,et al.  Synthesizing Continuous Deployment Practices Used in Software Development , 2015, 2015 Agile Conference.

[4]  Austen Rainer,et al.  Case Study Research in Software Engineering - Guidelines and Examples , 2012 .

[5]  Emerson R. Murphy-Hill,et al.  Improving developer participation rates in surveys , 2013, 2013 6th International Workshop on Cooperative and Human Aspects of Software Engineering (CHASE).

[6]  Wonho Kim,et al.  Kraken: Leveraging Live Traffic Tests to Identify and Resolve Resource Utilization Bottlenecks in Large Scale Web Services , 2016, OSDI.

[7]  Liming Zhu,et al.  Adopting Continuous Delivery and Deployment: Impacts on Team Structures, Collaboration and Responsibilities , 2017, EASE.

[8]  MünchJürgen,et al.  Raising the odds of success , 2016 .

[9]  Janice Singer,et al.  Studying Software Engineers: Data Collection Techniques for Software Field Studies , 2005, Empirical Software Engineering.

[10]  Martin C. Rinard,et al.  The Challenges of Staying Together While Moving Fast: An Exploratory Study , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[11]  Lianping Chen,et al.  Continuous Delivery: Huge Benefits, but Challenges Too , 2015, IEEE Software.

[12]  Sam Newman,et al.  Building Microservices , 2015 .

[13]  Ron Kohavi,et al.  Online controlled experiments at large scale , 2013, KDD.

[14]  Jürgen Münch,et al.  Raising the odds of success: the current state of experimentation in product development , 2016, Inf. Softw. Technol..

[15]  Jürgen Cito,et al.  Extraction of Microservices from Monolithic Software Architectures , 2017, 2017 IEEE International Conference on Web Services (ICWS).

[16]  Kristin Braa,et al.  Interpretation, intervention, and reduction in the organizational laboratory: a framework for in-context information system research , 1999 .

[17]  Richard Berntsson-Svensson,et al.  Challenges When Adopting Continuous Integration: A Case Study , 2014, PROFES.

[18]  Ashish Agarwal,et al.  Overlapping experiment infrastructure: more, better, faster experimentation , 2010, KDD.

[19]  Jan Bosch,et al.  Modeling continuous integration practice differences in industry software development , 2014, J. Syst. Softw..

[20]  Danny Weyns,et al.  Variability in Software Systems—A Systematic Literature Review , 2014, IEEE Transactions on Software Engineering.

[21]  Jez Humble,et al.  Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation , 2010 .

[22]  Bram Adams,et al.  Feature Toggles: Practitioner Practices and a Case Study , 2016, 2016 IEEE/ACM 13th Working Conference on Mining Software Repositories (MSR).

[23]  Cor-Paul Bezemer,et al.  Studying the Effectiveness of Application Performance Management (APM) Tools for Detecting Performance Regressions for Web Applications: An Experience Report , 2016, 2016 IEEE/ACM 13th Working Conference on Mining Software Repositories (MSR).

[24]  Georgios Gousios,et al.  Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub , 2017, 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR).

[25]  Harald C. Gall,et al.  Bifrost: Supporting Continuous Deployment with Automated Enactment of Multi-Phase Live Testing Strategies , 2016, Middleware.

[26]  Robert Karl,et al.  Holistic configuration management at Facebook , 2015, SOSP.

[27]  Jürgen Münch,et al.  The RIGHT Model for Continuous Experimentation , 2017, Software Engineering.

[28]  Shane McIntosh,et al.  Modern Release Engineering in a Nutshell -- Why Researchers Should Care , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[29]  Florian Rosenberg,et al.  Testing Idempotence for Infrastructure as Code , 2013, Middleware.

[30]  Ying Zou,et al.  An Industrial Case Study on the Automated Detection of Performance Regressions in Heterogeneous Environments , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[31]  Pearl Brereton,et al.  Using a Protocol Template for Case Study Planning , 2008, EASE.

[32]  V. T. Rajan,et al.  CanaryAdvisor: a statistical-based tool for canary testing (demo) , 2015, ISSTA.

[33]  Pasi Kuvaja,et al.  Relationship of DevOps to Agile, Lean and Continuous Deployment - A Multivocal Literature Review Study , 2016, PROFES.

[34]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[35]  Giordano Tamburrelli,et al.  Towards Automated A/B Testing , 2014, SSBSE.

[36]  Robert L. Nord,et al.  Technical Debt: From Metaphor to Theory and Practice , 2012, IEEE Software.

[37]  Liming Zhu,et al.  Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices , 2017, IEEE Access.

[38]  R. Atkinson,et al.  Accessing Hidden and Hard-to-Reach Populations: Snowball Research Strategies , 2001 .

[39]  Brian Fitzgerald,et al.  Continuous software engineering and beyond: trends and challenges , 2014, RCoSE 2014.

[40]  Michael S. Bernstein,et al.  Designing and deploying online field experiments , 2014, WWW.

[41]  Ron Kohavi,et al.  Controlled experiments on the web: survey and practical guide , 2009, Data Mining and Knowledge Discovery.

[42]  Liming Zhu,et al.  The Intersection of Continuous Deployment and Architecting Process: Practitioners' Perspectives , 2016, ESEM.

[43]  Laurie A. Williams,et al.  Continuous Deployment at Facebook and OANDA , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[44]  Alexander Serebrenik,et al.  Why Developers Are Slacking Off: Understanding How Software Teams Use Slack , 2016, CSCW Companion.

[45]  Richard Berntsson-Svensson,et al.  On the journey to continuous deployment: Technical and social challenges along the way , 2015, Inf. Softw. Technol..

[46]  Janice Singer,et al.  Guide to Advanced Empirical Software Engineering , 2007 .

[47]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

[48]  Eytan Bakshy,et al.  Design and Analysis of Benchmarking Experiments for Distributed Internet Services , 2015, WWW.

[49]  Philipp Leitner,et al.  All the Services Large and Micro: Revisiting Industrial Practice in Services Computing , 2015, ICSOC Workshops.

[50]  Harald C. Gall,et al.  The making of cloud applications: an empirical study on software development for the cloud , 2014, ESEC/SIGSOFT FSE.

[51]  Pasi Kuvaja,et al.  Continuous deployment of software intensive products and services: A systematic mapping study , 2017, J. Syst. Softw..

[52]  Jan Bosch,et al.  Systems and Software Variability Management , 2013, Springer Berlin Heidelberg.

[53]  Dror G. Feitelson,et al.  Development and Deployment at Facebook , 2013, IEEE Internet Computing.

[54]  Harald C. Gall,et al.  Runtime metric meets developer: building better cloud applications using feedback , 2015, Onward!.

[55]  Darko Marinov,et al.  Trade-offs in continuous integration: assurance, security, and flexibility , 2017, ESEC/SIGSOFT FSE.

[56]  Vahid Garousi,et al.  The need for multivocal literature reviews in software engineering: complementing systematic literature reviews with grey literature , 2016, EASE.

[57]  Lianping Chen,et al.  The Journal of Systems and Software , 2022 .

[58]  Darko Marinov,et al.  Usage, costs, and benefits of continuous integration in open-source projects , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

[59]  Liming Zhu,et al.  DevOps - A Software Architect's Perspective , 2015, SEI series in software engineering.

[60]  Olaf Zimmermann,et al.  The Software Architect's Role in the Digital Age , 2016, IEEE Softw..

[61]  Jan Bosch,et al.  The Evolution of Continuous Experimentation in Software Product Development: From Data to a Data-Driven Organization at Scale , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE).

[62]  Steve Neely,et al.  Continuous Delivery? Easy! Just Change Everything (Well, Maybe It Is Not That Easy) , 2013, 2013 Agile Conference.

[63]  Jan Bosch,et al.  Climbing the "Stairway to Heaven" -- A Mulitiple-Case Study Exploring Barriers in the Transition from Agile Development towards Continuous Deployment of Software , 2012, 2012 38th Euromicro Conference on Software Engineering and Advanced Applications.

[64]  Sooyong Park,et al.  Dynamic Software Product Lines , 2008, Computer.

[65]  Adam Moskowitz "Eat Your Own Dog Food" , 2003, login Usenix Mag..

[66]  Neil A. Ernst,et al.  Toward Design Decisions to Enable Deployability: Empirical Study of Three Projects Reaching for the Continuous Delivery Holy Grail , 2014, 2014 44th Annual IEEE/IFIP International Conference on Dependable Systems and Networks.

[67]  Andreas Metzger,et al.  CloudWave : where adaptive cloud management meets , 2017 .

[68]  Philipp Leitner,et al.  An Empirical Analysis of Build Failures in the Continuous Integration Workflows of Java-Based Open-Source Software , 2017, 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR).

[69]  Miryung Kim,et al.  The Emerging Role of Data Scientists on Software Development Teams , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[70]  Harald C. Gall,et al.  Supporting continuous integration by mashing-up software quality information , 2014, 2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE).

[71]  John B. Shoven,et al.  I , Edinburgh Medical and Surgical Journal.

[72]  Pasi Kuvaja,et al.  Dimensions of DevOps , 2015, XP.

[73]  Timo Lehtonen,et al.  Perceived Benefits of Adopting Continuous Delivery Practices , 2016, ESEM.

[74]  Mika Mäntylä,et al.  The highways and country roads to continuous deployment , 2015, IEEE Software.

[75]  Harald C. Gall,et al.  Towards quality gates in continuous delivery and deployment , 2016, 2016 IEEE 24th International Conference on Program Comprehension (ICPC).

[76]  Emerson R. Murphy-Hill,et al.  I heart hacker news: expanding qualitative research findings by analyzing social news websites , 2015, ESEC/SIGSOFT FSE.

[77]  Andy Zaidman,et al.  A Tale of CI Build Failures: An Open Source and a Financial Organization Perspective , 2017, ICSME.

[78]  J. Griffin Oops , 1974, Nature.