DevOps ā or development and operations ā is a term used in enterprise software development that refers to a kind of agile relationship between information technologies (IT) operations and development. The primary objective of DevOps is to optimize this relationship through fostering better collaboration and communication between development and IT operations. In particular, it seeks to integrate and activate important modifications into an enterpriseās production processes as well as to strictly monitor problems and issues as they occur so these can be addressed as soon as possible without having to disrupt other aspects of the enterpriseās operations. By doing so, DevOps can help enterprises register faster turnaround times, increase frequency of deployment of crucial new software or programs, achieve faster average recovery times, increase success rate for newly released programs, and minimize the lead time needed in between modifications or fixes to programs.
DevOps is crucial for the success of any enterprise because, by nature, enterprises need to segregate business units as individually operating entities for a more efficient system of operations. However, part of such segregation is the tendency to tightly control and guard access to information, processes and management. And this can be a challenge, particularly for the IT operations unit that needs access to key information from all business units in order to provide the best IT service possible for the whole enterprise. Simply put, part of the challenge in segregating business units into individually operating ones that are independent of each other is the relatively slow flow of information to and from such units because of bureaucracy.
Moving towards an organizational culture based on DevOps ā one where the enterpriseās operations units and IT developers are considered as āpartnersā instead of unrelated units ā is an effective way to break down the barriers between them. This is because an enterprise whose culture is based on DevOps is one that can help IT personnel provide organization with the best possible software with the least risk for glitches, hitches, or problems. Therefore, a DevOps-based organizational culture is one that can foster an environment where segregated business units can remain independent but, at the same time, work very well with others in order to optimize the organizationās efficiency and productivity.
āāāāāāāā
DevOps Venn diagram
āāāāāāāā
Key Principles
One characteristic of DevOps is that it isnāt grounded or dependent on stringent processes and methodologies. Itās based more on key principles that allow an enterpriseās key business units to efficiently work together and, in the process by breaking down any āwallsā that may prevent optimal working relationships among such units. These key principles that guide an enterpriseās DevOps are culture, measurement, automation and sharing.
Challenges Solved By DevOps
Just before the development of DevOps, it took several teams to collate the necessary data and informational requirements as well as writing code. After that, another team ā a QA team ā performed tests on new codes in a separate software development environment once the necessary requirements were met. Eventually, itās the same QA team that releases the new code for deployment by the enterpriseās operations group. After that, the deployment teams are divided further into groups referred to as āsilosā which include database and networking. And if you consider all the teams involved with the development and deployment of just one code, you wonāt be surprised why many enterprises suffer from project bottlenecks.
With such a set up, several undesirable things happen. One is that developers often become unaware of roadblocks for Operations and Quality Assurance that may keep the new programs from working as they were designed to work. Another thing that may happen is that as the QA and Operations teams work on so many features of the program, they may not have a true understanding of the purpose and value of the programs that are being developed/tested, which may keep such teams from effectively doing their work on such programs. Lastly, inefficiency and unnecessary backlogs are highly probable given each team or group has their own goals and objectives to achieve, which often times oppose those of the other groups, as well as the tendency to absolve themselves of responsibility for things that go wrong.
With DevOps, these potential problems can be addressed via creation of cross-functional teams that collaborate and share a common responsibility for maintaining the systems that are responsible for running software and other programs, as well as for prepping up the software so that they run on said systems with excellent feedback mechanisms for possible automation issues.
A Typical Scenario That Illustrates the Need for DevOps
Imagine that an enterpriseās development team (the Dev team) releases a new program āover the wallā to Quality Assurance ā the QA team. At this point, the QA team assumes the responsibility of discovering as many errors as possible in the new program, if any. Without any good working relationship ā or any relationship at all for that matter ā chances are high that the Dev team will be very defensive about the errors found by the QA team on their newly developed program, especially if there are lots of them. At which point, itās highly possible for the Dev team to even blame the QA team for such errors or bugs in the program. Of course, the QA team will deny that itās them or their testing environment thatās to blame for the errors or bugs and that at the end of the day theyāre just there to discover bugs that exist within the programs developers create. In other words, the QA team will just revert the blame for the errors back to the Dev team. It can become nasty.
Letās say, after several attempts, the bugs and errors were fixed and the program has fully satisfied the QA team. They now release the program to the operations team concerned, a.k.a., the Ops team. But the Ops team refuses to fully implement the new program because they feel that too much change too soon will hamper their ability to do their jobs effectively. So they limit their systemās changes. As a result, their operating system crashes and blames the Dev team for it, notwithstanding the fact that their refusal to implement the system fully led to the crash.
Defending their honor and glory, the Dev team blames the Ops team for not using the program the way it is designed to be used. The blaming continues on for a while until finally, someone has the sense to intervene and eventually lead the teams to cooperate their way into fixing the program. But the delay and the losses were already incurred.
The Continuum
One very practical way to look at the various DevOps aspects is to use whatās called the DevOps continuum. The vertical axis represents the 3 delivery chain levels of DevOps, which are continuous integration (lowest level), continuous delivery, and continuous deployment (highest level). The bottom horizontal plane or axis represents peopleās perceptions of what DevOps is focused on, where the left side represents an automation or tools perspective while the right side represents a culture perspective. Others feel strongly that DevOps must be focused more on culture than tools while for others, itās the other way around.
āāāāāāāā
The ideal location is the upper right hand corner, i.e., continuous deployment under a cultural perspective. Organizations that are located at this part of the continuum are considered as endangered species or unicorns simply because theyāre few and far in between. Very good examples of these āunicornsā include Etsy, Netflix, Flicker, Amazon, Google and Pinterest.
Bloggers, coaches and some thought leaders usually paint a DevOps picture thatās located on the upper right corner of the continuum. They may also have a strong bias towards either tools or culture. While itās not necessarily bad to have robust debates or discussions as to which is more important (tools or culture), the fact remains that organizations need both in order to optimize their productivity. Culture wonāt be productive without the necessary tools and tools wonāt work properly without the support of a very good culture.
Itās important for organization to realize that moving up to the DevOps Nirvana spot in the continuum takes time. Many times, the first move is to combine tools, culture and continuous integration, which is at the lower wrung of the continuum. It shouldnāt be an issue because DevOps isnāt a very simple and easy activity and as such, it takes many baby steps and some time to maximize.
An optimal DevOps may be diffe...