What is DevOps

Step Dorogov
CimpleO
Published in
4 min readJun 24, 2021

DEVelopment OPeration is a methodology for interaction between developers and IT service specialists. Their mutual integration ensures a high-quality product. DevOps is positioned as an agile development methodology for eliminating organizational and time barriers between development teams and other participants in the software life cycle (testers, administrators, technical support). The methodology helps them to collect, test and release software product releases faster and more reliably.

DevOps addresses this problem with Agile principles. In addition to development and testing, software operation processes are accelerated, i.e. deployment and support.

Complementing the development of DevOps has become a microservice architecture. The system is divided into separate modules and the implementation of each of them is in the area of responsibility of only one person. Due to the small size of each module (service), its architecture can be created through continuous refactoring, which reduces the complexity of preliminary design and allows you to constantly release new releases of the software product.

DevOps goals

Since DevOps processes cover the entire software delivery cycle, there are several main goals of this approach:

  • reduced time to market;
  • decrease in the failure rate of new releases;
  • reduction in error correction time;
  • quick recovery when a new version fails or other cases of a shutdown of the current system.

These goals are achieved through the solution of the following tasks:

  • coordination of software development and delivery processes with the operation;
  • automation of development, testing and deployment processes;
  • continuous testing of application quality;
  • IT infrastructure management as code;
  • control of all changes;
  • continuous monitoring of application performance and infrastructure health.

Thus, DevOps is focused on predictability, efficiency, security and maintainability of all processes, as well as regular delivery of a reliable product, its updates and maintenance.

DevOps principles

Considering DevOps, there are 5 basic principles of implementation:

Communication — cooperation of multidisciplinary specialists and teams due to a single information space of project content, open communication channels and constant communication of all participants;

Automation — using continuous delivery tools, running each code revision through a series of automated tests, often using cloud infrastructure, and then packaging successful builds and then moving them to the production server using automated deployments and managing infrastructure as code through self-deploying environments configurations.

Thrift — eliminating actions with low utility and speeding up processes, continuous improvement through regular analysis, separate testing of various tools, acceptance of failures, the ability to quickly detect problems and solve them immediately;

Performance measurements — the duration of user work with the product, the frequency of critical error messages in the logs — clear and precise criteria for evaluating work, indicators of the effectiveness of processes are needed;

Sharing — Shared responsibility and sharing of successes, release and maintenance of the application is done by the same people who built it, i.e. Developers and Operators interact at every stage of the application lifecycle.

Benefits of DevOps

By standardizing and automating development and implementation processes, DevOps brings the following benefits to software development:

  • 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, write automated tests, smoothing out possible infrastructure vulnerabilities in the code. This reduces the number of errors when deploying an application by about 5 times.

Disadvantages of DevOps

With all the advantages of this approach, the following disadvantages can be distinguished:

The incompleteness of the cycle — important stages of software life — development and analysis of requirements and design of architecture — remain outside DevOps. It is also possible to overlook manual testing, which can be critical in some cases. For example, if the developers did not analyze the requirements qualitatively enough and tested the product, considering it from the point of view of “ideal” code, and not from the point of view of users, the result may be inconvenient to use.

The high workload on management — if developers and operators do not have common goals, managers are to blame for not organizing effective interaction between teams of diverse specialists. To solve this problem, a new system for evaluating managers based on feedback from subordinates is needed.

Where is used

DevOps can be useful for almost any organization involved in developing applications or managing large numbers of servers. Large IT giants and tech enterprises in other industries are hiring DevOps engineers with might and main. In Russia, DevOps is also actively used in the banking, telecommunications and IT industries.

Small businesses and startups, whose goal is to quickly launch a minimum viable product to the market in order to test a new idea, while doing without DevOps engineers. This is due, in addition to organizational and methodological factors, also to the financial side of the issues:

DevOps engineers make the most money in the industry. As of July 2020, the salary of such specialists fluctuates around 70k dollars per year.

--

--