Since around 2007, and increasingly so today, we have been hearing about “DevOps” in companies. But what does it actually mean? Why are we hearing about it in the current climate, and what do you need to do to adopt DevOps?
What does DevOps involve?
A contraction of two words (Development and Operations), DevOps is a technical working practice that makes it possible to considerably reduce the time it takes to develop and deliver a web application. The aim is to achieve the shortest possible timescales in order to stay competitive. Nowadays, many companies adopting agile methods choose to use the DevOps approach.
DevOps determines the whole working process aimed at bringing together two teams with opposing objectives: developers and system administrators. As you will have gathered, in order to put DevOps in place, several people or groups of people first need to work together throughout a project. If the teams are well drilled, this approach will deliver greater profitability.
But it is not always straightforward to bring developers and system administrators together and get them working jointly on a project. It is important to give prominence to human relationships, collaboration and getting on well together in order to be able to reap the benefits of this approach.
Some good practices for flawless DevOps
It is worth noting that DevOps is a practice that is more or less complex to put in place depending on the teams. Indeed, it is essential that teams know how to understand one another and communicate with each other. In addition, system administrators need to train on the new technologies used by developers so as always to keep up with the latest advances.
DevOps practitioners must be able to keep themselves constantly up to date, whatever stage of the project they are involved in. They must also be able to understand other teams’ tools and working methods in order to move forward together.
Communication tools
In order to avoid problems between developers, who want to use the latest technologies, and system administrators, who have to keep pace in order to ensure projects are secure, you need to think about the tools teams use to communicate.
Teams need to keep track of one another and to know what is going on in their own team and in the teams of colleagues involved in the project. Teams must be able to communicate with each other. They must be close-knit and understanding, but above all they must have the same information at the right time.
Management tools
Management tools are very important for keeping track throughout the whole duration of a project. They are all the more important when several teams are working together. There are many of them, of different types, with features that are more or less similar. It is up to you to find the ones that best meet your requirements and needs depending on the project.
For tracking:
Trello is a project management tool. It allows teams to familiarise themselves with the project and follow it step by step. This tool will help teams get an overview of everyone’s tasks and know the project’s duration and progress. For the DevOps technical practice to work, teams need to be given perspective on their own tasks and on other people’s tasks in order to see the project as a whole.
For code management:
GitHub makes it possible to host the various programming files online so that anyone with access can see what has been done. This tool allows for better collaboration between teams.
Docker is a tool that allows teams to work on their code in containers with all the necessary features but isolated from the whole program. That way, it is possible to deploy resources gradually without risking bringing everything down.
For continuous deployment:
Jenkins is a tool based on the practice of continuous deployment. That is to say, developers update the files several times with the features they want to put into testing. This tool will save teams a great deal of time, since it allows for better maintainability of the source code. Tests are carried out little by little so that errors can be spotted more quickly without having to dig through hundreds of lines of code.
Continuous deployment and delivery
The DevOps approach forces teams to stop thinking in isolation. They are responsible from the start of the project to the end, from design through to delivery, but also for maintaining the program.
To make the process easier, the continuous deployment technique needs to be adopted. That is to say, development and testing cycles need to be shortened in order to simplify delivery. Tests are carried out more often, on small pieces of code, so errors are easier to spot. It should no longer be necessary to wait for the project to be developed in its entirety before deploying the program. This must happen automatically and regularly.
This model follows the defined stages “Plan – Create – Verify – Package – Release – Configure – Monitor” and allows for regular delivery that is simpler, faster and of better quality.
Bringing the database into testing: DataOps
After a few years, DevOps evolved into DataOps in order to meet a different need, but with a similar technical practice. As with DevOps, DataOps is also a contraction of two words: Data and Operations.
DataOps requires collaboration between the roles that process data and the roles that ensure data security. It is therefore the same approach as for DevOps explained above. Except that this time it is aimed at data-driven companies.
Indeed, professionals are starting to see data and databases as pieces of code that also need to be subjected to testing and automation. Data processing time needs to be reduced and the way data is managed and secured needs to be improved. What is more, professionals believe that within a few years databases will be managed by programs. They will therefore no longer be configured entirely by people.
Some risks to take into account
However, the considerable risks that can arise in the event of an error should not be overlooked. Data loss can seriously jeopardise companies. A great many precautions therefore need to be taken to ensure the reliability of the code that manages the database so that it does not affect the values held within it.
For more articles, take a look at our blog.