A Forrester Consulting Thought Leadership Paper Commissioned By Microsoft DevOps Best Practices The Path To Better Application Delivery Results September 2015 Table Of Contents Executive Summary ........................................................................................... 1 DevOps Leaders Achieve Faster Delivery And Better Quality ..................... 2 Automation And Integration Are Critical Steps.............................................. 4 Automate Testing To Help Make Data-Driven Release Decisions ............... 5 Smaller Releases Mean Faster Releases ........................................................ 8 Faster Feedback Means Better Results .......................................................... 9 Key Recommendations ................................................................................... 10 Appendix A: Methodology .............................................................................. 11 Appendix B: Supplemental Material .............................................................. 11 Appendix C: Demographics ............................................................................ 12 ABOUT FORRESTER CONSULTING Forrester Consulting provides independent and objective research-based consulting to help leaders succeed in their organizations. Ranging in scope from a short strategy session to custom projects, Forrester’s Consulting services connect you directly with research analysts who apply expert insight to your specific business challenges. For more information, visit forrester.com/consulting. © 2015, Forrester Research, Inc. All rights reserved. Unauthorized reproduction is strictly prohibited. Information is based on best available resources. Opinions reflect judgment at the time and are subject to change. Forrester®, Technographics®, Forrester Wave, RoleView, TechRadar, and Total Economic Impact are trademarks of Forrester Research, Inc. All other trademarks are the property of their respective companies. For additional information, go to www.forrester.com. [1-TVS6WB] 1 Executive Summary If you are wondering whether development operations (DevOps) is merely a fad, you’re already falling behind. Faster and more nimble competitors are already able to quickly respond to shifting customer demands to deliver better customer experiences and better business results. DevOps provides a proven set of practices that enable organizations to deliver applications more quickly to better connect with customers while simultaneously reducing both cost and risk. The results are profound, but achieving them requires focus and willingness to leave behind old ways of working and organizing. In June 2015, Microsoft commissioned Forrester Consulting to evaluate application development and delivery best practices. Then to further explore this trend, Forrester developed a hypothesis that tested the assertion that the terms DevOps and continuous delivery (CD) are synonymous with pipeline automation. For enterprises, these terms have broader meaning and reflect a journey toward continuous delivery. In conducting in-depth surveys with 425 application developers and IT operations managers, Forrester found that companies that deliver applications more frequently (monthly or more) are actively implementing DevOps practices and seeing measurable results. KEY FINDINGS Forrester’s study yielded three key findings: › › DevOps practices enable organizations to increase satisfaction, revenue, and efficiency. Nearly seven out of 10 organizations delivering applications monthly or more frequently expect higher customer satisfaction. On top of that, 65% of those releasing rapidly anticipate improvements in efficiency across teams, and 56% anticipate revenue growth. Faster delivery cycles enable organizations to provide innovative solutions by quickly delivering new capabilities and reducing the time they spend waiting for feedback. They are able to try new ideas quickly, improve the ones that work, and rapidly improve or remove the ones that don’t. Better, faster feedback enables organizations to cut waste, reduce cost, and improve customer experiences. DevOps practices build on Agile success to enable continuous delivery. To push forward on the Agile journey, application delivery professionals are turning to DevOps practices like infrastructure as code (IaC), infrastructure-as-a-service (IaaS) and platform-as-aservice (PaaS) to support application delivery. Other practices such as continuous integration (CI) are widely adopted by more than 60% of organizations that deploy applications monthly or more frequently, compared with only 48% of those delivering at a slower pace. › Agile practices have broadly penetrated most organizations, but there’s still room to advance. Agile practices — most specifically, those that deliver applications in small increments — have widespread adoption. Approximately 80% of DevOps professionals work on teams that deliver small increments of value; however, half of those delivering at least monthly are adopting widespread incremental delivery. While these practices improve delivery cycle time, more complete adoption of DevOps practices leads to even greater improvements. 2 DevOps Leaders Achieve Faster Delivery And Better Quality Increasing competition and customer demand for new capabilities and better experiences is compelling organizations to deliver applications faster than ever before. Mobile and cloud applications are at the center of these changes, but all application types are affected as organizations race to win, serve, and retain customers. This is particularly evident in the way that companies measure quality: According to our data, half of respondents work for companies that measure software quality through customer engagement. In addition, our survey found: › › › Some organizations deliver applications monthly or more frequently. Thirty-nine percent of DevOps professionals reported releasing applications monthly or more frequently. Another one-third (32%) reported that they average one release per quarter, while 27% reported one or two releases per year (see Figure 1). New application versions are delivered even more frequently, with updates happening monthly or more frequently in nearly 80% of companies surveyed. Agile practices are widely adopted. Respondents have embraced Agile application development techniques. When we look more carefully at companies delivering more frequently, we find that a greater percentage (52%) are delivering in small increments compared with companies delivering at a slower pace (46%) (see Figure 2). Agile practices also give organizations an edge in making release decisions based on test data. Loosely coupled application architectures, based on services and microservices, also enable faster application delivery Simplify processes and teams and automate wherever possible. Removing constraints and improving flow leads to faster delivery. Organizations that deliver more rapidly improve how work flows by removing steps that add no value and eliminating handoffs and wait time (see Table 1). FIGURE 1 Thirty-Nine Percent Release Applications Monthly Or More Frequently “How often does your team release applications?” Release many times per day 2% One release a day 3% 39% 9% One release a week 25% One release a month 32% One release per quarter 21% Two releases a year One release a year (or less frequently) 6% Base: 425 IT professionals involved in application development and delivery (percentages may not total 100 because of rounding) Source: A commissioned study conducted by Forrester Consulting on behalf of Microsoft, June 2015 TABLE 1 Eight Steps To Take Action 1. Automate environment management. 2. Integrate continuously. 3. Automate deployments. 4. Automate testing with APIs. 5. Make data-driven release decisions. 6. Reduce size of releases. 7. Eliminate handoffs and wait time. 8. Drive better results with feedback. Source: Forrester Research, Inc. 3 FIGURE 2 More Frequent Releases Are Driven By Key Practices “Which best describes the scope of your team’s adoption of each practice?” (Those who selected “widespread use” of these practices) Release less frequently (N = 256) Release monthly or more frequently (N = 168) 50% Make data-informed release decisions Deliver in small increments of value Utilize loosely coupled architectures 60% 46% 52% 42% 47% Create managed environments that are available on demand ∆ 10% ∆ 6% ∆ 5% 53% 57% ∆ 4% Deliver software via an integral, cohesive, self-directing, multidisciplinary team that spans releases 52% 54% ∆ 2% Maximize throughput in the delivery pipeline 52% 54% ∆ 2% Manage and minimize technical debt Form/test hypotheses about customer needs, make decisions based on evidence gathered from testing Prioritize work based on expected business value Base: 425 IT professionals involved in application development and delivery Source: A commissioned study conducted by Forrester Consulting on behalf of Microsoft, June 2015 43% 43% ∆ 0% 48% 48% 55% 51% ∆ 0% ∆ -4% 4 Automation And Integration Are Critical Steps Agile software delivery practices help organizations streamline application development, but delivery bottlenecks can hamper efforts to reach a desired delivery velocity. DevOps practices that automate environment management, integrate continuously, and automate deployments increase delivery speed by systematically removing wait time and error-prone manual effort, along with the frustrations and friction they create. Our survey showed: › › › › Cloud technologies help organizations deliver faster. Sixty-three percent of organizations delivering applications monthly or more frequently use cloud-based environments, such as infrastructure-as-a-service, to remove deployment bottlenecks, compared with 56% of organizations that deliver less frequently. Organizations that deliver more frequently are also using PaaS more than those delivering at a slower pace. Fifty-eight percent of organizations that release monthly or more use platform-as-a-service, compared with 52% of organizations that release less frequently (see Figure 3). Automated delivery pipelines provide consistency in delivery. More than half (52%) of DevOps professionals use an automated release pipeline to deploy into production (see Figure 3). Also, our research found that 40% of companies deploying monthly or more frequently use their automated release pipeline to establish stages for progressively harsher testing. CI is the foundation for the automated delivery pipeline. Continuous integration provides consistency during the build, integration, and testing process and allows teams to detect issues early. According to our data, CI is used by nearly 60% of those deploying applications monthly or more frequently, compared with only 48% of those delivering at a slower pace. Automating software deployment is also a key enabler of fast delivery. For two-thirds of organizations, software is deployed automatically as part of the CI process. In three out of five companies deploying monthly or more frequently, software deployment is automated but performed separately from the CI process, according to our research. Merging automated deployment with continuous integration gives organizations an end-to-end delivery pipeline. FIGURE 3 Release Techniques In Practice “Which, if any, of the following release techniques does your team currently practice?” Release less frequently (N = 256) Release monthly or more frequently (N = 168) 55% Infrastructure as code Automated release pipeline deploying into production, with or without signoff gates 76% 45% 52% Use of public cloud for deployment on infrastructureas-a-service (IaaS) 56% 63% Use of public cloud for deployment on platformas-a-service (PaaS) Use of containers 52% 58% 34% 35% ∆ 21% ∆ 7% ∆ 7% ∆ 6% ∆ 1% Base: 425 IT professionals involved in application development and delivery Source: A commissioned study conducted by Forrester Consulting on behalf of Microsoft, June 2015 Take action: To start, automate environment provisioning of development and testing environments, and then expand to production environments. Automate building and testing software through continuous integration. Start with basic build and unit test automation, and then gradually expand automation to functional, performance, scalability, and security testing. Combine release automation with continuous integration to create a basic automated application delivery pipeline. 5 frequently (see Figure 4). Standardizing configurations and automating provisioning not only makes testing earlier possible, but it eliminates the “it works fine in the test environment, it will work fine in release” problem. Automate Testing To Help Make Data-Driven Release Decisions Automating testing and incorporating it into continuous integration from the very beginning provides developers with timely feedback that they can use to improve application quality. The resulting test data enables organizations to make more informed release decisions. Earlier and more frequent testing is essential in organizations that release monthly or more frequently. Our study found: › › › Automating testing environment management increases release speed and accuracy. Overall, 64% of respondents reported doing some testing in production environments, gradually exposing more and more users as confidence in the release improves. While this limits the impact of defects in production, it does not provide feedback early enough to significantly improve quality. FIGURE 5 How Issues Are Discovered Standardizing and automating environment provisioning simplifies and speeds delivery. Among organizations delivering monthly or more frequently, 52% reported using infrastructure-as-code techniques, compared with only 36% of those releasing less “Thinking about your production environment, which of the following best describes how issues are discovered?” Release less frequently (N = 256) Release monthly or more frequently (N = 168) FIGURE 4 Half Of Those Delivering Monthly Use IaC Techniques Instrumentation or logging of application events triggered by user actions Automated alerts that are triggered prior to or by a disruption in service “Which of the following methods does your team use to define environments and deployment processes for testing?” Issues are reported by end users Release less frequently (N = 256) Release monthly or more frequently (N = 168) Testing environments are created on demand using infrastructure-ascode techniques Dedicated individual test machines (physical or virtual) Testing is done in production, with progressive exposure to users based on successful test outcomes Dedicated test labs with complete virtualized environments (roles, network) 36% 52% 51% 65% 62% 68% 60% 58% Instrumenting applications running in production provide developers with essential feedback. Seventy percent of DevOps teams delivering more quickly are relying on instrumentation or logging of application events triggered by user actions to uncover issues with applications. These teams are also more likely to rely on automated alerts, which are triggered before a disruption in service. On the other hand, organizations delivering quarterly or less frequently continue to rely on manual inspections by staffers and end user reports of issues (see Figure 5). Manual inspection by staff ∆ 16% ∆ 14% 57% 70% 45% 51% ∆ 13% ∆ 6% 57% 61% 69% 70% ∆ 4% ∆ 1% Base: 425 IT professionals involved in application development and delivery Source: A commissioned study conducted by Forrester Consulting on behalf of Microsoft, June 2015 ∆ 6% ∆ -2% Base: 425 IT professionals involved in application development and delivery Source: A commissioned study conducted by Forrester Consulting on behalf of Microsoft, June 2015 › Loosely coupled application architecture simplifies and speeds delivery. As we saw in Figure 2, approximately half (47%) of organizations delivering monthly or more frequently reported using loosely coupled architectures. Applications composed of relatively independent services are easier to release and evolve; their releases require less coordination and are less risky. Loose coupling also simplifies application development by 6 reducing team dependencies, but it increases the importance of software architecture to arrive at the right set of loosely coupled services. › Teams that deliver faster manage technical debt more deliberately. Technical debt, or postponed remedial technical work, is more closely managed at organizations delivering faster. More than half (54%) of teams delivering monthly or more frequently reported that they periodically launch projects to replace or modernize major legacy systems, compared with only 45% of those delivering at a slower pace. Additionally, 52% of organizations with faster delivery speeds track high-value and/or high-pain technical debt remediation work, compared with only 36% of those delivering more slowly (see Figure 6). Release less frequently (N = 256) Release monthly or more frequently (N = 168) 36% “Which, if any, of the following overarching life-cycle techniques does your team currently practice?” ∆ 16% 45% Strategically incur short-term technical debt to enable experimentation and fast feedback; we track and measure this debt and pay it off promptly 44% Autonomous, multidisciplinary teams Use public-cloud-based environments for development and test 52% Periodically launch projects to refactor/replace/modernize major legacy systems Track and remediate infrastructure debt along with application debt FIGURE 7 Overarching Life-Cycle Techniques In Place Kanban boards for portfolio tracking “Which of the following best describes your company’s approach toward technical debt?” Avoid technical debt at all costs by rigorous architectural design and review Faster delivery demands greater discipline across a broad set of life-cycle practices. Contrary to common misconception, teams that deliver faster do not cut corners to do so. Nearly 60% of those delivering rapidly reported that they track bugs, work items, and tasks centrally, and 54% are trending historical usage data (see Figure 7). In addition, teams delivering more frequently are also more likely to have autonomous, multidisciplinary teams and a common definition of “done.” Release less frequently (N = 256) Release monthly or more frequently (N = 168) FIGURE 6 Managing Technical Debt List high-value and/or high-pain technical debt remediation work in our backlog › Common definition of “done” Kanban boards for project item tracking ∆ 9% 54% ∆ 8% Trend historical usage data for improvement opportunity Common product backlog 23% ∆ 13% 36% 32% 43% 40% 51% 29% 38% ∆ 11% ∆ 11% ∆ 9% 27% 35% ∆ 8% 46% 54% 35% 43% ∆ 8% ∆ 8% 52% Track bugs, work items, and/or tasks centrally 38% ∆ 1% 39% 46% ∆ 0% 46% Base: 425 IT professionals involved in application development and delivery Source: A commissioned study conducted by Forrester Consulting on behalf of Microsoft, June 2015 Use private cloud environments for development and test Trend historical production data for improvement opportunity Trend historical development data for improvement opportunity 51% 58% ∆ 7% 41% 47% ∆ 6% 46% 48% ∆ 2% 44% 46% ∆ 2% Base: 425 IT professionals involved in application development and delivery Source: A commissioned study conducted by Forrester Consulting on behalf of Microsoft, June 2015 7 › Teams that deliver faster pay more attention to operational analytic data. According to our survey, nearly three-quarters (73%) of organizations delivering monthly or more frequently are monitoring application performance of servers or services, compared with only 63% of companies delivering quarterly or less frequently. Those delivering faster are also more likely to track usage and monitoring analytics. Overall, 54% of all respondents reported using real-user monitoring. These methods provide some insight into customer experiences, but better insight into real customer experiences, tied back to desired customer outcomes, is still needed. Take action: Use IaC to define development, testing, and production environments. Automate deployment processes to improve speed and consistency. Measure and manage technical debt. Tie operational and analytics data back to desired customer outcomes. 8 Smaller Releases Mean Faster Releases Smaller-scope releases enable organizations to release more frequently. Faster releases let organizations try new ideas quickly, gather feedback from customers, and then adapt and improve (see Figure 8). Our survey found that: › › Smaller releases are essential to faster application delivery. Fifty-two percent of teams delivering monthly or more often are in organizations with widespread use of small, incremental delivery techniques, compared with 46% of teams delivering at a slower pace. Doing less in each release reduces risk, increases speed of feedback, and ultimately reduces waste because there are fewer unknowns when it comes to what customers really want. FIGURE 9 Fifty-Seven Percent Of DevOps Teams Delivering Monthly Or More Prioritize Single-Piece Items To Deliver Continuously “How does your team plan and schedule work?” Release less frequently (N = 256) Release monthly or more frequently (N = 168) In sprints In single-piece product backlog items, stackranked, delivered continuously 38% 47% 49% 57% By release and milestone Monthly or more frequent delivery requires incremental, quick delivery. For those releasing this quickly, 57% are releasing in single-piece, prioritized product backlog items, delivered continuously. In addition, 47% are delivering in sprints (see Figure 9). By release train ∆ 9% 59% 64% 36% 40% ∆ 8% ∆ 5% ∆ 4% Base: 425 IT professionals involved in application development and delivery FIGURE 8 Software-Powered Value Delivery Cycle Source: A commissioned study conducted by Forrester Consulting on behalf of Microsoft, June 2015 Take action: Customer Experience Systems of record Systems of engagement Solution Co-creation Source: Forrester Research, Inc. Measured Satisfaction Gap Systems of automation Reduce the scope of each release to obtain faster feedback and reduce waste. Reduce the scope of each release to minimize risk by reducing dependencies and simplifying deployments. Reduce the scope of each release by focusing each one on improving a single outcome for a single persona. 9 Faster Feedback Means Better Results Regardless of delivery cadence, organizations want to improve their delivery speed in order to improve customer or user satisfaction. At the same time, organizations that deliver faster are more confident that they will achieve higher customer satisfaction. Our survey found that: › › › Adopting DevOps leads to greater customer satisfaction and revenue. Sixty-nine percent of those delivering at faster rates expect customer satisfaction to improve. In addition, 56% of organizations delivering rapidly expect rising revenue as delivery speeds increase, compared with only 49% for slower deliverers (see Figure 10). Adopting DevOps practices also leads to increased efficiency. DevOps teams that release more frequently expect to see improved efficiency between the IT operations teams and development teams with faster, more accurate delivery of applications (see Figure 10). Adopting DevOps enables teams to better utilize customer insights. Faster application delivery cycles provide organizations with timely customer feedback. In turn, the insight gained from frequent application delivery enables teams to see how their work improves customer experiences and ultimately satisfaction. These insights drive new ideas that can be tested sooner, either confirming customer experience improvements or signaling that different approaches are needed. Take action: Measure customer satisfaction/business outcomes tied to releases. Measure and use customer feedback to increase satisfaction and user experience. FIGURE 10 Impact Of Faster Application Delivery “What are the positive business impacts your company would expect to get from faster, more accurate delivery of applications?” Release less frequently (N = 256) Release monthly or more frequently (N = 168) Increased revenue 49% 56% Improved efficiency between operations and development teams 59% 65% 63% 69% Improved user satisfaction Distinctive competitive advantage 46% 43% ∆ 7% ∆ 6% ∆ 6% ∆ -3% Base: 425 IT professionals involved in application development and delivery Source: A commissioned study conducted by Forrester Consulting on behalf of Microsoft, June 2015 10 Key Recommendations Faster application delivery requires embracing DevOps practices. Every organization can benefit from these practices; however, each needs to assess its current situation and determine which practices are most immediately critical and which can be planned for the future. Forrester’s in-depth surveys with application development and IT operation professionals point to seven key recommendations for companies looking to adopt DevOps practices to improve their results: › › › › › › › Streamline, simplify, and automate the delivery pipeline. Treating the delivery process as a pipeline process and using practices like lean value stream analysis to understand the process, starting with the point where code is checked in to the point where customers receive benefit, helps companies identify barriers to faster delivery. A more complete view actually starts with the point where ideas or incidents are identified and flows through customer experience. Expand test automation to improve quality while increasing delivery speed. Manual testing cannot keep pace with consumer demand for new capabilities. Leading organizations automate application testing using APIs and incorporate this testing into their continuous integration processes. Removing dependence on manual testing increases delivery speed, reduces manual errors, and reduces testing cost. Automating testing as part of the CI process provides developers with fast feedback and ensures quality is built in from the beginning. Use infrastructure as code and cloud technologies to simplify and streamline environment provisioning. Developers need environments as soon as they start to build code, and testers need them soon after. Having the right environments available when they are needed improves speed and quality by eliminating time spent waiting. Standardizing environment configurations across development, testing, and production eliminates errors and hard-to-duplicate incidents caused by undocumented changes across environments. Reduce technical debt to increase responsiveness and reduce cost. Technical debt, or postponed remedial technical work, accumulates over time and makes applications brittle, complex, and hard to change. Reducing technical debt makes applications more modular, resilient, and capable of being released more frequently. Decouple applications and architectures to simplify delivery activities. Modern applications are built around APIs that decouple architectures and connect applications together. The resulting components and services can be developed and delivered relatively independently, simplifying delivery activities, increasing delivery speed, and reducing delivery risk. Collect and analyze feedback to drive better requirements. Rapid delivery cycles enable organizations to measure whether what they delivered mattered and to know what they should work on next. Rapid feedback enables organizations to deliver increasing levels of customer delight while reducing the amount of time, money, and effort they spend on building things that no one wants or needs. Measure business outcomes tied to application releases. When rapid application delivery enables better customer insight, organizations are able to see a close connection between business strategy, execution, customer experience, and business results. Organizations try out new ideas, gather feedback, and rapidly refine their solutions based on customer experiences. This enables organizations to identify and rapidly act upon new business opportunities. 11 Appendix A: Methodology In this study, Forrester conducted an online survey of 425 organizations in the US, the UK, France, Germany, China, India, and Brazil to evaluate application development and delivery practices. Survey participants included decision-makers in application development and IT operations. Questions provided to the participants explored current application development practices, cycle times, and testing methods/environments. The study began in May 2015 and was completed in June 2015. Appendix B: Supplemental Material RELATED FORRESTER RESEARCH “The Eight Tenets Of Faster Application Delivery,” Forrester Research, Inc., April 15, 2014 “Modern Application Delivery Demands A Modern Organization,” Forrester Research, Inc., June 27, 2014 “The Software-Powered Business,” Forrester Research, Inc., October 20, 2014 12 Appendix C: Demographics FIGURE 11 Respondent Country And Company Size Country Company size France 11% United States 27% Germany 11% 500 to 999 employees 4% 20,000 or more employees 19% India 11% United Kingdom 14% Brazil 14% China 12% 1,000 to 4,999 employees 53% 5,000 to 19,999 employees 24% Base: 425 IT professionals involved in application development and delivery (percentages may not total 100 because of rounding) Source: A commissioned study conducted by Forrester Consulting on behalf of Microsoft, June 2015 FIGURE 12 Application Development And Delivery Involvement “In your typical workday, how involved are you in each of the following tasks?” This is my core job function I am involved with this task, but it’s not my core job function Software development strategic planning Software development and testing 69% 59% 29% 39% Software and infrastructure support and maintenance 54% 39% Infrastructure provisioning and configuration 54% 39% Software release and deployment 53% 41% Base: 425 IT professionals involved in application development and delivery Source: A commissioned study conducted by Forrester Consulting on behalf of Microsoft, June 2015