What is DevOps?
People | Process | Technology
DevOps is a software and systems development culture that’s enabled through team collaboration, common processes, and technology to deliver a better aligned and unified outcome.
It was conceived as more of a mindset than a toolset; this means it’s as much a cultural shift of silos of the Development and Operations teams as it is a technology. The hardest thing to change in any organization is not the technology but the people and processes.
Microsoft’s definition of DevOps is that “DevOps is the union of people, processes, and technology to enable continuous delivery of value to your end users.”
Gartner’s definition of DevOps is “DevOps seeks to bridge the development and operations divide through the establishment of a culture of trust and shared interest among individuals in these previously siloed organizations.”
The following diagram visualizes the DevOps process flow, which can help translate the concept of DevOps into tangible actions and value:
Figure 5.20 – The DevOps process flow
Development and operations teams can be more effective when collaborating on working toward a common set of aligned goals and automating repetitive tasks. This means systems and software can be created, updated, and deployed much quicker with increased quality, removing cost and adding value at every stage. The following diagram shows the nirvana of DevOps as a shift in software and systems development culture; the goal of DevOps is to make workload delivery vastly more efficient:
Figure 5.21 – Unified team culture and alignment of goals
Developers no longer trade quality for speed, and operations engineers adopt a more agile approach to deploying infrastructure that is balanced with control. This means that operations teams deploy and manage their infrastructure not by clicking through a portal or manually executing shell commands but through code; they adopt practices and tools used by development teams and treat their infrastructure as source code. This is a concept known as Infrastructure as Code (IAC).
A DevOps approach can be achieved by automating each stage of the process as much as possible, as well as fostering collaboration between the Development and Operations teams to deliver unified outcomes through aligned common goals.
In this section, we introduced what DevOps is. In the next section, we will look at some further concepts surrounding DevOps.
CI/CD
CI/CD is an abbreviation for Continuous integration/continuous delivery.
In a nutshell, these are a set of practices and operating principles that form the basis of the DevOps culture. This is to allow Dev and Ops teams to work more collaboratively, align team goals, and release software and systems with greater frequency, control, and quality.
CI/CD is a continuum; CI automates the process of building code and testing it, at which point CD takes over to automate the delivery to the required environments for consumption. The deployment is then operated and monitored, and changes can be fed back into the loop to have the code edit cycle start again.
The following diagram visualizes the CI/CD approach and how it maps to the DevOps process flow:
Figure 5.22 – Continuous integration/continuous delivery
As shown in the preceding diagram, CI/CD maps to the DevOps process flow that we learned about in the What is DevOps? section. This section looked at the concept of CI/CD within DevOps. In the next section, we will look at the Azure DevOps service.