Development Operation is a set of practices to improve the efficiency of development and operation of software through their continuous integration and active interaction of specialized specialists using automation tools. DevOps is positioned as an Agile approach to eliminate organizational and time barriers between development teams and other participants in the software life cycle (testers, administrators, technical support), so that they can quickly and more reliably collect, test, and release software releases.
The very concept of DevOps appeared in the early 2000s, when in the IT world of large corporations there was a problem of mismatching work processes, in which the normal operation of a software product was disrupted due to the functional and organizational separation of those who write the code and those who execute it deployment and support. Developers and product operators often have different and even conflicting goals, business leaders, and KPIs. The workplaces of diverse participants in the software life cycle are often located in different locations. Such fragmentation and disruption of communication within the company leads to lengthening the time for solving problems, overtime work, disrupted releases, and customer dissatisfaction.
DevOps processes and objects
DevOps, like other Agile practices, is focused on teamwork, where all aspects of the software life cycle are considered, from program code to product operation by the end-user:
- Code – development and analysis, version control and code merging;
- Build – continuous integration of various assemblies;
- Test — Continuous testing that provides feedback on business risks;
- Operate (Work with packages) – repository of artifacts, pre-installation of the application;
- Release – change management, formal release approval, release automation;
- Deploy – managing infrastructure as code;
- Monitor – Monitor application performance, end-user experience.
Advantages of DevOps
By standardizing and automating the development and implementation processes, DevOps provides the following benefits in software release management:
- events, documented management processes, and detailed reports are easy to track;
- developers have more control over the environment, giving the infrastructure a more applied understanding of the product and its operation;
- significant reduction in time to market due to a “seamless” development and implementation cycle;
- improving customer satisfaction;
- improving the quality and reliability of products;
- increased productivity and efficiency;
- quick response and high speed of experiments;
- expanding the competencies and responsibilities of developers – programmers participate in setting up servers and finding errors, writing automated tests, smoothing out possible infrastructure vulnerabilities in the code. This reduces the number of errors when deploying an application by about 5 times.
The DevOps concept proposes to solve this problem by applying Agile principles not only to development and testing but also to software operation processes, i.e. to deployment and support. Thus, the popularity of DevOps has arisen, among other things, due to the spread of Agile practices focused on accelerating the delivery of a finished product and increasing the number of released versions. Besides, the microservice architecture became an additional driver for the development of DevOps, when the system consists of a set of separate loosely coupled modules, the implementation of each of which is in the area of responsibility of one person who develops, tests, and deploys software. Due to the small size of each module (service), its architecture can be created through continuous refactoring, which reduces the laboriousness of preliminary design and allows you to constantly release new releases of the software product.