DevOps has become an increasingly popular concept in the IT industry in recent years. However, the prevalence of the name itself is not matched by the awareness of what it actually means. I will try to shed some light on that in this article.
What is DevOps?
The term DevOps is a portmanteau, a word cluster consisting of the words Development and Operations. It means a methodology for running IT projects that emphasises close collaboration between the teams responsible for software development (Dev) and those in charge of operations (Ops). However, without a broader discussion on the tasks of the aforementioned teams, this entire paragraph sounds like a pleonasm. The floor is made of floor and the butter tastes like butter.
What are the responsibilities of the Operations department?
The competences of that department are very broad. In a nutshell, it is responsible for the way the IT department is managed, in terms of both hardware and software. In other words, it decides in which direction the software needs to be developed. However, in order to set the correct trajectory, it is essential to collect feedback from users – this is one of the tasks of the Operations department as well.
Other competences of this department include providing support, that is, running a helpdesk. This means that an Operations department has to stay in constant contact with both product users and developers. This means that we are dealing with two organelles within a single cell – the flow of information between them must be smooth and uninterrupted, and the functioning of one is dependent on the other.
What if we removed the division?
Let’s go back to the definition of the term DevOps, outlined in the introduction. Collaboration between two groups of people in the IT department, as close as if they had merged into one organism. What are the consequences of eliminating divisions in this way?
The DevOps methodology significantly accelerates product development. This is made possible by the constant exchange of information between departments and by using an iterative working model. In contrast to the once common waterfall model, in which each stage of software development was treated as a separate task initiated once the previous one had been completed, here the processes of planning, analysis, design and implementation are intertwined. This makes the product production process more flexible.
By using the DevOps methodology, a company can save time and money. Above all, it is capable of delivering a functioning product quickly. Obviously, this does not mean that the first iteration will bring about the final version of the software. However, by creating an MVP (minimum viable product), development can continue once the software is up and running, and already in use. In this way, the client is in a position to reconsider its assumptions and, potentially, redefine its needs. With the close collaboration of people, who in a standard working model would be split into two teams (Development and Operations), you don’t waste time creating a full version of the software, getting feedback, re-analysing and working from scratch again. Instead, feedback is collected at the very first iteration of the product and can be communicated to developers who are focused on quickly releasing further versions of the results of their work.
Software life cycle
Software must undergo development at all times. This applies to the implementation of new functionalities as well as simply fixing bugs or patching security gaps. These activities take place long after the first final version of the software has been delivered to the client. Again, the DevOps methodology significantly improves work on this level.
The Operations department, in collaboration with the client, determines the course of development for the product. It helps you set goals and collect feedback – what is working well, what can be improved, which features you might want to add or remove. In close collaboration with the Development department, you can implement such changes seamlessly. Instead of waiting until there are enough suggestions that it is worthwhile to rewrite the programme from scratch, many successive iterations can be created, each solving one of the problems. This gives the client a feeling that its suggestions are taken seriously, as they are met with a swift response.
Reducing the number of bugs
Automation is an essential element of the DevOps methodology. It might seem that its purpose is to speed up work, but in fact, that is not what it is about in the first place. People, unlike machines, are not very good with repetitive tasks. As their experience increases, they perform them increasingly quickly, but this involves slipping into a routine that may lead to mistakes. When you’re developing applications where multiple technologies and resources are used, this is very risky.
Automating the deployment processes of new software versions, especially when they appear very quickly one after the other, is absolutely essential. With dedicated tools, it is possible to mitigate risk – the team deals with developing the application, while an algorithm makes sure that the specific iteration is fit for publication. This allows you to ensure regularity in publishing. One example is Messenger, with new versions released every three days.
Is it hard to implement the DevOps methodology?
No. It is not necessary to make revolutionary changes to the company. The process of merging the Development and Operations departments and implementing the variety of new solutions does not have to happen overnight. It is a minimally invasive measure which does not force a comprehensive change in working habits. On top of that, the first benefits of switching to DevOps can be seen as early as 2-3 months after the start of the transformation in most companies.