First of all, what is DevOps?
The name ” DevOps ” comes from the contraction of the word “development” and “operations”.
DevOps is a culture, a movement, a development model and an operational strategy that aims to improve the communication between the developers and the operation team in order to reduce the “Time to market” (Time to market a product).
It is also a set of good practices designed to meet a growing need for industrialization and standardization of the information system.
The world of developers and the world of the operation team
Over the years, the world of development and operation team has moved away, and their cultures have diverged.
They first moved away physically. The teams have been partitioned, outsourced or relocated.
Then culturally distant! Developers must respond to a business need, be responsive and deploy as often as possible while the operator must ensure that the information system is and will remain operational. Developers work in Agile and operators work in ITIL. These two methodologies have the same goal but differ in practice.
Certain specific signs make it possible to demonstrate that a rupture has begun:
- A lack of communication between the development, integration, production and support teams.
- An administrative heaviness to prepare a passage in production.
- Conflicts between development and production, mutually blaming responsibilities when a deployment has caused numerous incidents.
- Lack of responsiveness in incident resolutions.
This compartmentalization between the teams has a significant impact on the business:
- Applications that do not work in production despite the tests.
- Deployment time too important.
- A time to market too important.
- An inability to quickly deliver a bug fix in production
- Difficulties to manage all the configurations.
- Delays in deliveries.
- Application performance issues.
- Difficulties to quickly increase the capacity of an application.
These impacts can have a direct impact on the business such as a decline in the quality of the company’s services offered to its customers and the risk of being distanced by these competitors when the “Time to Market” is too long.
What benefits can you get from DevOps?
- A repeatable and secure deployment process.
- The deployment process is unique and executed automatically, so the risk of error is very limited.
- A sharp decrease in the deployment time.
- The process is standardized and simplified, the complexity is reported on the automata.
- A reduction in deployment costs.
- The number of hours spent on-call is reduced, the flow of deployment is improved.
- A reduction in the number of errors. Thanks to automation, it is ensured that each version contains the right configuration, the right data, the good libraries. And that they will be installed in the same way every time.
- The operator can deploy a multitude of technologies without having knowledge of the tools.
Deployment becomes a breeze, a simple “press button” on a web interface and the deployment plan runs automatically. The technical expertise intervenes in support N2 in case of error.
- Time saved on deployment is dedicated to quality improvement (maintenance, supervision, and performance)
- Better understanding between the teams
- A reduction of stress
DevOps integrates 3 processes and I would add a fourth
Continuous Integration is the act of compiling, testing and deploying on an integration environment. The goal is to test as often and as much as possible the release to detect bugs as soon as possible. Most of the work is done by test tools. The deployment on the integration platform is simple and accessible by the studies.
Continuous Delivery is the act of compiling, testing and delivering an application at each stage of its life cycle (recipe, pre-production, repetition, production). This step is carried out after the validation of the tests carried out in integration. The test phase is not the same as that of integration since it is a question of validating that the application meets the business need. The transition from one state to another is fully automated, which is why the deliverable must be made in such a way that it can be deployed in production as soon as it is put into production.
Strong DevOps coders are a result of good education system, understanding software logic, following OOPS concepts, and getting grilled in a continuous environment of dedicated individuals. Extend this idea into software deployment process, and you get this: “Continuous Deployment ” is the result of building, testing and deploying an application into production seamlessly and repeatedly at a much quicker turnaround time. Continuous Deployment requires that the Continuous Integration and Continuous Delivery processes have been successfully completed. The deployment is done by a simple “press button”. After deployment, it should be possible to measure potential impacts using performance measurement tools and monitoring tools. If there is a problem, an automated backtracking process can be executed.
On a personal level, I would add the ” Continuous Improvement ” process of continually improving the three previous processes. I see this process as a set of indicators able to measure the “Time to market” and the quality of previous processes in order to highlight areas for improvement.
And communication in all this?
The four processes described previously allow a better fluidity of the deployments but do not improve the communication. The development and operation team must first collaborate to define a common deployment process by exposing their constraints, an organizational change must be put in place to decompartmentalize them and a tool must be made available to them to follow a release as soon as it is put in place. in integration. But that will be the subject of a future article.