The simplest and most understandable definition of DevOps can be drawn from the two words it is a compound of; development and operations.
In the earliest days of computer programming, a programmer produced the code necessary to have the computer perform specific functions. That code was presented to the computer operations team, who loaded it and ran it. If something went wrong, those computer operators really had no idea how to fix it, so they turned to the developers to make corrections. As you can imagine, this could become very time-consuming very quickly, and did.
DevOps celebrates the value of collaboration, communication and integration, making them the three main principles of this ever-growing modern approach to software delivery. In this case, it’s collaboration between the developers of the software and the operators of the hardware. They come to share methodologies and tools, working as a single united team. The friction between the Information Systems Development group that creates and improves the software that runs the business and the Information Technologies Operations group that runs the computing infrastructure that delivers those applications has been present for years. The two teams finally saw the advantages in creating a more effective collaboration and created DevOps, compounding their names to signify that they had become one.
The core purpose of DevOps is to achieve continuous improvement through continuous development, continuous integration and continuous deployment (CI/CD), leading to continuous feedback that starts the entire cycle again. This is an iterative process that keeps adding value with each cycle. The flip side is that every cycle also adds complexity. CI/CD tools exist in many flavors that each help manage the growing complexity. Some automate software testing and deployment. Others focus on integration and delivery. Some feature plug-ins that will automate just about any task in a DevOps environment, or at least claim to.
The cycle begins with software developers writing code for an application. To make this all work they must be using microservices in containers because that’s the only way the applications can move fast enough and problems can be resolved without disruption to operations, which are required to enable DevOps to bring value.
They work until they have a minimum viable product (MVP) to give to operations, which then deploys it so users can use it.
Now operations immediately begins asking users for feedback on this latest iteration of the software. They continue collecting as much feedback as they can gather in minimal time. This is brought back to the developers, who immediately set upon turning the feedback into new code that resolves problems or creates improvements identified by the users.
The developers then give that new code to operations, which immediately deploys it and starts collecting new feedback, and the next cycle continues. And so on, and so on.
Focus on Outcomes
This cycle of develop, deploy, feedback iterates or repeats over and over again. Very little if any attention is paid to control of the system. Everyone is instead focused on producing the best possible outcomes.
How often are you accustomed to receiving software updates? Once a quarter? Once a month?
In some organizations, DevOps may generate new updates dozens or even hundreds of times per day.
Containers Add Speed
Thanks to the use of microservices in containers, the only changes that may be made in any particular iteration of the cycle are to those containers involved in the improvements or fixes. These can be deployed sometimes in seconds instead of hours or days.
Continuously developing and deploying the software over and over again, making improvements each time, meets the goal of continuous improvement through continuous deployment, and that’s the fundamental purpose of DevOps.
Further reading: AvePoint Launches New Partner Program Aimed At Microsoft Teams, 365
DevOps Requires a Cultural Commitment
Perhaps the most important thing to point out is that effective DevOps really requires a complete change in a company’s culture across the board. Everyone must be enthusiastic about participating to keep things moving fast enough to maximize the iterations. Users who may be in any department must be prepared to quickly evaluate and provide feedback on each iteration until they’ve got a stable platform to work with. This means that everyone is in some way a part of the DevOps initiative.
DevOps has its roots in Agile methodology, in which work is accomplished in a series of short “sprints.” You can look at DevOps as a continuing marathon composed of many sprints, one right after the other.
It’s commonly observed that you cannot just change a company’s culture on command. You can influence the culture, shift it, it can evolve over time, but it’s nearly impossible to just instruct all employees to simply change the way they think and act about specific things. The culture of any organization starts at the top of the leadership hierarchy and trickles down throughout, filling every space. It’s easy to think that the only people impacted by the implementation of DevOps are the developers who write code and the operators who run that code on the network for the users. But those teams do not exist in a vacuum. The code they write and run serves other members of the group in departments throughout the enterprise. The process is dependent upon those users for the feedback that enables rapid iteration and constant improvement. Since this is a crucial element to the success of a DevOps process, they must be ready to absorb the new culture as well as anybody else.
Another benefit of DevOps is that it may break down and unify silos of information and applications. There are also silos of people stuck in their own processes and ways of managing information that should be brought closer together through the implementation of DevOps.
For any culture-impacting change to successfully occur, there must be “buy-in” at the top of the organization. For DevOps initiatives to be successful they require “buy-in” from everyone. This kind of all-encompassing, whole-organization culture-change can be very disruptive to even the most well-developed companies. That easily becomes an overwhelming disadvantage unless it is managed effectively and proactively.
If anything, DevOps has illustrated the incredible value of cross-functional collaboration. DevSecOps is already an extension that incorporates those managing data and network security along with the developers and system operators. As this continues, who knows how much improvement may be accomplished!
Further reading: Subscriptions: Software Licensing on Steroids