Credit: Dmitriy Rybin
A traditional software company releases its flagship product maybe every few years. Each release can include hundreds of new features and improvements. Because releases are infrequent, users can grow impatient waiting for each new release and are thankful when it finally arrives.
Disappointment sets in, however, when bugs are found and features don't work as expected. Under great stress and with great turmoil, an emergency release is produced and put into production (hurried through the regular release process, often achieved by skipping tests), which has still more bugs, and the process repeats with more emergency releases, leading to more frustration, stress, and disappointment. Worse yet, new business opportunities are missed or ignored because of doubt, uncertainty, and distrust in the IT department's ability to deliver value.
Isn't there a better way?
Such practices are a thing of the past for companies that subscribe to the DevOps method of software development and delivery. New releases are frequent: often weekly or daily. Bugs are fixed rapidly. New business opportunities are sought with gusto and confidence. New features are released, revised, and improved with rapid iterations. In one case study, a company was able to provide a new software feature every 11 seconds.17
Which of these software teams would you rather be? Which of these companies will win during their industry's digital transformation?
DevOps presents a strategic advantage for organizations when compared with traditional software-development methods (often called phase-gate or waterfall.7 Leadership plays an important role during that transformation. In fact, Gartner predicts that CIOs who haven't transformed their teams' capabilities by 2020 will be displaced.9
For organizations hoping to capture market share and deliver value faster (or even just deliver software more safely and securely), DevOps promises both speed and stability.4 It has developed as a prominent phenomenon of digital transformation in modern organizations that use software to deliver value to their customers in industries including banking, retail, and even manufacturing. DevOps combines activities of software development and delivery to enhance the speed of getting new software features to customers. This leads to higher customer satisfaction and profitability, which are important outcomes at the organization level. It also leads to important team-level outcomes such as better collaboration among different departments (such as developers, testers, and IT operations) and improved work-life balance.
Executing a successful DevOps transformation isn't without its challenges. Organizations and software products vary in maturity and implementation, making transformation efforts difficult to design and deploy across teams and organizations. Most importantly, for DevOps to truly deliver value, it must include more than just tooling and automation—so simply purchasing and installing a solution is not sufficient. As outlined here, DevOps includes culture, process, and technology. Indeed, success stories abound: Companies such as Kaiser Permanente, Capital One, Target, Starbucks, and ING have adopted DevOps methods, allowing them to deliver software for key applications in just seconds.
DevOps enhances automation from applications to infrastructure provisioning. Continuous delivery supports automation and enables faster time to market and agile software development with fast feedback cycles. As the phenomenon is relatively new in practice, practitioners report on struggles with issues such as leadership and cultural transformation, implementing continuous delivery pipelines, and integrating a culture of collaboration in team settings.8 Each of these areas would benefit from examination and guidance by formal research to test and augment the valuable experiences of those in industry.
In contrast, DevOps calls for a shift to product-based management. Practically, this means there is no more "end date" to projects, and teams instead deliver features—and therefore value—continuously. An important part of achieving this is integrating teams throughout the value stream, from development through operations; some organizations are even including business stakeholders. In this model, software is a product that is maintained as a product, with delivery and value metrics being tracked by the business continuously.
One of the biggest challenges (and complaints!) in industry is the lack of a formal definition for DevOps. Many practitioners argue that this is intentional, because it allows teams and organizations to adopt a definition that works for them. In addition, they point out that having a formal definition of agile (coded in the Agile Manifesto) hasn't solved the problem of definition sprawl, and the resulting confusion around what is truly meant when an organization says it is "going agile" still plagues the industry. This lack of understanding can be challenging, so we present some common definitions for reference here.
And yet, these definitions focus on the outcome (value through speed and stability, via Forsgren4) or the foundations of the discipline (bringing together development and operations, via Roche16 or Sebastian et al.17 If one wants to understand the components of DevOps methods, perhaps the most common presentation of these is summarized as CALMS: culture, automation, lean, measurement, and sharing.6,12 Here is a brief definition of each component:
This article uses the five core elements of CALMS as a framework.
Culture. Working as part of a Dev Ops team requires a culture of collaboration within a cross-functional team setting. In its ideal state, DevOps uses a so-called cross-functional team, which means that groups made up of developers, testers, quality assurance professionals, and IT operations engineers all work together to develop and deliver software. In this way, they are familiar with each others' work and challenges (a common phrase to describe this is "to have empathy"), which helps them create and maintain better software. For example, because they see the challenges in maintaining scalable and reliable infrastructure encountered by operations professionals, developers write more scalable and reliable code in collaboration with operations staff.
Automation. This principle requires a suite of DevOps tools.2,13 The following are a few examples of available automation tooling:
Continuous integration and delivery reduce the cost and risk of releasing software. They do this by combining automation and good practices to consistently, reliably, and repeatably perform work (such as tests and builds) that enables fast feedback and builds quality in during the software-delivery process. This helps teams deliver features faster and more reliably and, in turn, achieve faster value delivery for the organization. The highest-performing teams are able to deploy 46 times more frequently with 2,555 times shorter lead times than low performers. Failure rates are seven times less, and they are able to recover 2,604 times faster than their lower-performing peers.8
Lean. "Building quality in"—referenced earlier—is a key tenet in DevOps, and a principle also found in lean. Applied to DevOps, this means teams look for opportunities to remove waste, leverage feedback loops, and optimize automation.
Companies such as Kaiser Permanente, Capital One, Target, Starbucks, and ING have adopted DevOps methods, allowing them to deliver software for key applications in just seconds.
Let's look at an example. DevOps teams differ in size and product responsibility. In some models, a single team conducts all software development and delivery activities, including development, testing, delivery, and maintenance. They are ultimately responsible for the complete software-delivery life cycle of the software products (and may be responsible for more than one product), delivering value to the business. Lean processes allow for quick iterations and feedback throughout the development and delivery process to improve quality and build faster and more reliable systems. Examples include working in small batches to enable fast flow through the development pipeline, limiting work in process, fixing errors as they are discovered vs. at the end, and "shifting left" on security input.
These practices may sound familiar; similar practices have driven quality and value in manufacturing. (For a great story about lean manufacturing, check out episode 561 of This American Life,11 which discusses NUMMI (New United Motor Manufacturing Incorporated), the joint venture between Toyota and GM in Fremont, CA.)
Measurement is another core aspect of DevOps. The ability to monitor and observe systems is important, because software development and delivery are essentially dealing with an invisible inventory that interacts in complex ways that cannot be observed. (This is in contrast to traditional physical manufacturing systems such as an automobile assembly line, described in the NUMMI case.)
Through effective monitoring, teams are able to track, watch, measure, and debug their systems throughout the software-delivery life cycle. It should be noted that metrics are also a tool for quality assurance, and measurements from several sources should be leveraged.9
Sharing of knowledge and information enables successful DevOps teams and helps amplify their success. By sharing practices—both successes and failures—within teams, across the organization, and across the industry, teams benefit from the learning of others and improve faster. While others have pointed out that sharing is possible in any domain and any methodology, DevOps has adopted this as a cultural norm, and many in the industry report that the field is much more collaborative than their prior work in tech.
Internal collaboration may include work shadowing or job swapping: developers are involved in operations and maintenance activities (for example, developers may even "take the pager"), and operations engineers rotate in to development and test roles, learning essential components of design and test work. In many cases, all cross-functional team members participate in the same meetings, which gives them shared context. Cross-industry sharing often takes places at conferences, with dozens of DevOps Days and other community-organized events sprouting up around the world.
As many practitioners note, managing and enabling the cultural changes inside an organization can be a more difficult and important challenge than implementing technical changes.
The application of these principles leads to better outcomes: for individuals (seen in reduced burnout and greater job satisfaction), for teams (seen in better software delivery outcomes and better team cultures), and for organizations (seen in improved performance in measures such as profitability, productivity, customer satisfaction, and efficiency.7,21
Although DevOps has been an important movement in industry for more than a decade, it has not received much attention from the academic community until recently. And while CALMS principles are not always referred to using these terms, they do appear in existing research (for example, Fitzgerald and Stol3).
The core insights of some prior Dev Ops-related research follow:
Journal Articles
Presents a continuous software-engineering pipeline and a research agenda for different continuous processes including DevOps and BizDev (business strategy and development).
Highlights the roles adopted when sharing and sourcing knowledge in a system management context, and identifies strategies for optimizing outcomes.
Identifies the most important system and information characteristics of tools for users who maintain systems.
Highlights that maintenance effort should be considered during the design phase and calls this DFM (design for maintenance). The authors present insights into how the links among documents should affect both the maintenance effort and use.
Investigates how an organization's computer-aided software engineering adoption decision is influenced by individual factors of IS leaders and technological factors.
Aims to examine software maintenance as interlinking comprehension and modification; the relationship between these two factors is moderated by cognitive fit.
Conferences
Examines how people tailor their shared PC environment and presents an understanding of how software development tailoring can be helpful in designing systems that better fit the demands.
Investigates key challenges of DevOps adoption in embedded system domains.
Presents an ideal skill set that DevOps team members should adopt to manage the software delivery life cycle.
Implementing DevOps presents several challenges. First, technology—and the resulting organizational transformation—is difficult, but strong leadership can help. As many practitioners note, managing and enabling the cultural changes inside an organization can be a more difficult and important challenge than implementing the technical changes. Good leadership is vital. One approach studied in several contexts, including DevOps, is transformational leadership; this style uses five dimensions (vision, intellectual stimulation, inspirational communication, supportive leadership, and personal recognition) to inspire and guide teams.
Second, DevOps requires a custom solution for each organization. Each context is unique, and a prescriptive approach to DevOps implementation and adoption is unlikely to be successful. Teams and organizations pose a unique set of challenges and cultural norms. Each one should adopt and adapt its own approach to achieve Dev Ops success. The adaptation of Dev Ops should include development of not only technical, but also cultural, process, and measurement practices. The work of creating a unique and seemingly ad hoc technology transformation journey is difficult and may be daunting, so many organizations look for step-by-step guides. However, these are not likely to provide solutions (beyond basic advice such as "automate your toolchain") and are usually offered by those trying to sell you something.
Third, each DevOps solution should encompass a holistic view, consisting of automation (including tools and architecture), process, and culture. In many traditional approaches, specialist knowledge in one area (for example, development) is leveraged to accomplish a task before passing it off to another group. In DevOps, a move from this high specialization to include a broad understanding of more areas is necessary. (Some call this T-shaped knowledge, with the top part of the "T" representing broad knowledge, while the stem of the T represents deep understanding in one area of expertise.)
This allows people to understand how their work will affect and interact with more areas of the technical stack; this often requires significant additional learning and responsibilities in the transition to DevOps. Organizations should provide training and education, and not just expect technologists to augment their learning independently. Note that while some technologists consider this expansion of responsibilities and knowledge exciting, others may push back, especially those who are just a few years from retirement and comfortable in their work roles, or who see sharing information about their roles as a risk to job security. Organizations must consider these training and cultural challenges in particular and respond accordingly. (As already noted, DevOps is about much more than just technology!)
DevOps is about providing guidelines for faster time to market of new software features and achieving a higher level of stability. Implementing cross-functional, product-oriented teams helps bridge the gaps between software development and operations. By ensuring their transformations include all of the principles outlined in CALMS, teams can achieve superior performance and deliver value to their organizations. DevOps is often challenging, but stories from across the industry show that many organizations have already overcome the early hurdles and plan to continue their progress, citing the value to their organizations and the benefits to their engineers.
The authors would like to thank our anonymous reviewers, whose guidance and thoughtful feedback helped us to shape and refine this article.
1. Dennis, A.R., Samuel, B.M. and McNamara, K. Design for maintenance: how KMS document linking decisions affect maintenance effort and use. J. Information Technology 29, 4 (2014), 312–326.
2. Ebert, C., Gallardo, G., Hernantes, J. and Serrano, N. DevOps. IEEE Software 33, 3 (2016), 94–100; https://ieeexplore.ieee.org/document/7458761.
3. Fitzgerald, B. and Stol, K.-J. Continuous software engineering: A roadmap and agenda. J. Systems and Software 123, (2017), 176–189.
4. Forsgren, N. DevOps delivers. Commun. ACM 61, 4 (Apr. 2018), 32–33; https://dl.acm.org/citation.cfm?id=3174799.
5. Forsgren, N., Durcikova, A., Clay, P.F. and Wang, X. The integrated user satisfaction model: Assessing information quality and system quality as second-order constructs in system administration. Commun. AIS 38 (2016), 803–839.
6. Forsgren, N. and Humble, J. The role of continuous delivery in IT and organizational performance. In Proceedings of the Western Decision Sciences Institute, 2015
7. Forsgren, N., Humble, J. and Kim, G. Accelerate: The Science of Lean Software and DevOps: Building and Scaling High-performing Technology Organizations. Revolution Press, Portland, OR, 2018.
8. Forsgren, N., Humble, J. and Kim, G. Accelerate: state of DevOps report: Strategies for a new economy. DORA (DevOps Research and Assessment) and Google Cloud, 2018; https://bit.ly/2vDjPmU
9. Forsgren, N. and Kersten, M. DevOps metrics. Commun. ACM 61, 4 (Apr. 2018), 44–48; https://dl.acm.org/citation.cfm?id=3200906.3159169.
10. Forsgren, N., Sabherwal, R. and Durcikova, A. Knowledge exchange roles and EKR performance impact: Extending the theory of knowledge reuse. European J. Information Systems 27, 1 (2018), 3–21.
11. Glass, I. Episode 561, "NUMMI 2015." This American Life; https://www.thisamericanlife.org/561/nummi-2015.
12. Humble, J. and Molesky, J. Why enterprises must adopt DevOps to enable continuous delivery. Cutter IT Journal 24, 8 (2011), 6–12; https://www.cutter.com/sites/default/files/itjournal/fulltext/2011/08/itj1108.pdf.
13. Humble, J. Continuous delivery sounds great, but will It work here? Commun. ACM 61, 4 (Apr. 2018); 34–39; https://dl.acm.org/citation.cfm?id=3173553.
14. Kohavi, R., Crook, T., Longbotham, R., Frasca, B., Henne, R., Ferres, J.L. and Melamed, T. Online experimentation at Microsoft, Data Mining Case Studies 11, 2009.
15. Lwakatare, L.E. et al. Towards DevOps in the embedded systems domain: Why is it so hard? In Proceedings of the Hawaii International Conference on System Sciences, 2016.
16. Roche, J. Adopting DevOps practices in quality assurance. Commun. ACM 56, 11 (Nov. 2013), 38–43; https://dl.acm.org/citation.cfm?id=2524721.
17. Sebastian, I.M., Ross, J.W., Beath, C., Mocker, M., Moloney, K.G. and Fonstad, N.O. How big old companies navigate digital transformation. MIS Q. Executive 16, 3 (2017), 197–213.
18. Shaft, T.M. and Vessey, I. The role of cognitive fit in the relationship between software comprehension and modification. MIS Quarterly 30, 1 (2006), 29–55.
19. Sharma, S. and Rai, A. Adopting IS process innovations in organizations: The role of IS leaders' individual factors and technology perceptions in decision making. European J. Information Systems 24, 1 (2015), 23–37.
20. Trigg, R.H. and Bødker, S. From implementation to design: Tailoring and the emergence of systematization. In Proceedings of the ACM Conference on Computer Supported Cooperative Work, 1994, 45–54; https://dl.acm.org/citation.cfm?id=192869.
21. Wiedemann, A. A new form of collaboration in IT teams—exploring the DevOps phenomenon. In Proceedings of the Pacific Asia Conference on Information Systems, 2017, 1–12.
22. Wiedemann, A. and Wiesche, M. Are you ready for Devops? Required skill set for Devops teams. In Proceedings of the European Conference on Information Systems, 2018.
Copyright held by authors/owners. Publication rights licensed to ACM.
Request permission to publish from [email protected]
The Digital Library is published by the Association for Computing Machinery. Copyright © 2019 ACM, Inc.
No entries found