What is, actually, DevOps?

What is ‘DevOps? There are many definitions of the term «DevOps». Is it a movement? A process? A job title? Or just a way of thinking?

«DevOps» as a term was first coined in 2009 by Patrick Debois when discussing the misunderstandings that arise in the communications between development and systems teams and cause delayed project delivery. DevOps, as the name implies, is a combination of software development and operations and refers to a set of best practices for managing cloud applications; an agile idea based on continuous integration, which allows frequent code releases. 

But what kind of misunderstandings when development and systems teams work together?

The majority of software companies work by keeping departments apart from each other.

On one side, we have the developers, who have to develop a product at the highest possible speed, be innovative and always guided by a great tendency to change. On the other side, operations professionals have to implement, configure and optimize resources for the correct functioning of the code, constantly aiming to achieve system stability.

As developers complete code packages, they give them to operations who implement them in a production environment. During this process, it is quite common for errors to appear, which ends in an exchange of reproaches and blaming each other. While operations are working to solve the problem, development delivers fresh packages and that slows down the whole process, thus disabling ops to stabilize and optimize the system.

This sort of imbalance and tension that occurs between the two teams generates conflict, delays the delivery of the project and drives up costs.

And then comes DevOps

DevOps was envisaged to encourage communication between departments, seeking to identify common interests of all parties, automating processes and facilitating continuous integration.

The application of DevOps processes allows building software quickly, with higher quality, at a lower cost and a very high frequency of releases.

DevOps and the SDLC

DevOps influences the SDLC throughout a few phases. Phases are mutually dependent and they are not specifically attached to a role (e.g.. software developer, QA specialist, etc). In an authentic DevOps culture, all roles participate in all phases in a certain way.

  • Build: In this phase of DevOps, software development takes place, with the whole development process being divided into small cycles. This enables the DevOps team to accelerate the software development and delivery process.

  • Test: The QA team uses tools to identify and fix errors in the new code continuously.

  • Release: In this phase, the new functionality is integrated with the existing code and tests are carried out. Continuous development is only possible due to continuous integration and continuous testing.

  • Deploy: The implementation process takes place and this stage, and it is a continuous process. It is done so that any changes made at any time in the code should not affect the operation of the website, which is particularly useful if it is a high-traffic website.

  • Operations: In this phase, the operating team will be working to improve any inappropriate behavior of the system and fix the errors thus contributing to the creation of a solid and stable system.

  • Monitoring: This last stage of a DevOps process is actually a permanent phase and is applied to the entire cycle. Here the operation team is in charge of defining the measures to monitor and control the applications' health status and their infrastructure.

Advantages of DevOps:

Teams that adopt DevOps culture, practices and tools to improve performance and create higher quality products in less time, which in turn increases customer satisfaction. Among the multiple benefits of the approach, these four stand out:

  • More collaboration and trust between the teams involved in the development, highlighting shared responsibility, transparency, and agility in communication.

  • Ability to publish changes in production with greater frequency, quality and stability, which results in greater competitiveness.

  • The incident resolution time is accelerated, which has a direct impact on customer satisfaction.

  • Improvement management of unforeseen work.

Continuous integration and delivery (CI/CD)

Continuous integration is a DevOps practice where developers frequently merge code changes in the main code branch. In continuous integration, automatic tests are used, thus each execution results in a new code commit. This way, the code of the main branch is always stable.

Continuous delivery (CD) is the automatic and frequent implementation of new versions of an application in a production environment. By automating the necessary implementation steps, teams reduce the problems that may arise in that process, which allows more frequent updates.

When these two practices are established, the resulting process is CI/CD, which includes the complete automation of all the steps from the "commit" of the code until its implementation in the production environment. The CI/CD implementation allows teams to focus on code creation and reduces the possibility of human errors in the daily steps that are performed manually. CI/CD also speeds up the process of implementing new code and reduces the involved risks. Therefore, implementations happen more frequently and are made in smaller increments, which helps teams to be more agile and more productive. This is due to the fact that teams rely more heavily on the code that is executed.

DevOps is still a relatively new phenomenon, and there are certain myths that should be debunked. Certain companies and individuals within companies still have concerns regarding DevOps, but in most cases, these concerns arise from their misconceptions. These misconceptions perhaps stem from the fact that the theoretical basis of DevOps, its philosophy, is quite clear, but its application is still not as clear. Right now we would like to point out the most important characteristic of DevOps and conclude this article with the message:  

DevOps is not an individual role! It’s a culture where the entire development team holds each other accountable. 

Category
Tags
on December 19, 2019