📜 ⬆️ ⬇️

DevOps - automate everything

The purpose of the article is to give basic ideas about DevOps and the practices used in this methodology. There will be no difficult terms, specific products and the road map of DevOps implementation, but I hope it will be interesting to read.



As such, there is no definition of DevOps, and everyone understands this methodology differently. The declared goal is to remove the barriers between DEV elopment and OP erations. Therefore, DevOps are often understood as the fact that operations, QA and development are in the same team, sit in the same room, hold general meetings, communicate. In itself, the convergence and informal communication of team members is always useful and this can already lead to improved results. But there are also formal practices, following which helps to improve the delivery of releases, and hence the satisfaction of the business.

The following are described here:
')

The following practices are taken from the Microsoft DevOps-Fundamentals series. Very interesting and useful webinars, however, with an emphasis on Microsoft technology.

The structure of the article is structured as follows: practices are listed, their descriptions are given, the Business Meaning of the practice is presented (how this approach will improve the life of the business) and Measurability (how to measure the improvement). Both Business Value and Measurable are also taken from the DevOps-Fundamentals presentations.

Well, let's get started. The software development and delivery process consists of the following steps:



It all starts with planning. Planning release, development, testing, deployment. We will skip this step, since development and operations are not involved in this step. After the developer has finished the implementation of a certain piece of code, he saves (commit) it to the version control system. After this, the first practice comes into play:

Continuous Integration




Continuous Integration is a software development practice that consists of merging working copies into a common main branch of development several times a day and performing frequent automated project builds to quickly identify and solve integration problems. Wiki

Actually, what is Continuous Integration? The process goes something like this: the developer, after completing his task and debugging, saves his changes to the working copy (TFS, SVN, Git). Then a certain robot (TFS, TeamCity, anything else) comes into effect, tracking the changes in the working version. He sees that the working copy has changed and starts the project build. According to the results of the assembly, the developer (and other interested persons) is notified of whether everything has passed successfully or not. The notification can be through a letter, a message in the tray, or displayed on a web page. Thus, if the build failed, the developer will immediately know about it.

Business value



Measurability



Automated Testing




Automated testing is the process of software verification, in which the basic functions and steps of the test, such as starting, initializing, executing, analyzing and issuing the result, are performed automatically using automated test tools © .

After the assembly is assembled, it needs to be checked. This can be done most quickly with the help of automated tests. Various tools are used for this: it can be Unit tests, UX tests, integration tests. The main condition is that they should not require human participation. With the help of auto-tests, we immediately get information about whether there are errors in our assembly. And we can immediately begin to correct them, without waiting for the results of manual testing.

Business value



Measurability



Infrastructure as a code (Infrastructure as Code)




Infrastructure-as-code is the process of managing and preparing the computing infrastructure (processes, physical servers, virtual servers, etc.) and their configuration through machine-processed definition files, rather than physical hardware configuration or the use of Wiki configuration tools .

The approach to configuring applications should be the same as for the code. That is, configuration files, environment variables, something else should be stored in a centralized repository or version control system, possibly in the same as the code is stored. And when configuring the application, they should be taken from there. Accordingly, if it is necessary to change the configuration on the server, the responsible employee does not enter it and changes, for example, the connection to the database, but changes the desired variable in the storage, and from there it automatically appears on the server.

For variables that are specific to different environments (Dev, Stage, Production), synonyms are used that are substituted for real values ​​when deployed. An example of such a substitution is the transform technology used to modify the configuration files of .NET applications.

Habits



Business value



Measurability



Continuous Deployment




Continuous deployment - Continuous Integration (Continuous Integration) and Continuous Delivery (Continuous Delivery). This is the next step after successful assembly and successful completion of automatic tests (and, perhaps, the installation is ticked “assembly is ready for deployment” by a responsible person). If you are confident in your tests, their recruitment and coverage, if they succeed, the automatic installation starts on the appropriate environment, test or product. The difference between Continuous Integration, Delivery, Deployment is well described here: http://blogs.atlassian.com/2014/04/practical-continuous-deployment/

Business value



Measurability



Release Management




Release management is that we define the formal criteria for whether the assembly is ready for installation on the appropriate environment. An example of the criteria by which the assembly is ready, and, if they are fulfilled, the delivery (Continuous Deployment) starts automatically:


Useful link: Release Management in Visual Studio 2013 .

Business value



Measurability



Configuration Management




Configuration Management (Configuration Management) - is a detailed record and update information that describes the software and equipment of the enterprise. Such information typically includes the versions and updates that were applied to the installed software, as well as the location and network addresses of the equipment. ©

Here to the formal definition to add too much and nothing. Everything must be recorded and counted.

Business value



Measurability



Load Testing




Load testing - a subtype of performance testing, collecting indicators and determining the performance and response time of a software system or device in response to an external request in order to establish compliance with the requirements for this system (device) Wiki

It often happens that, for example, for web applications, when one user (developer or tester) quickly opens a page and responds well to working with it. But as soon as the changes get to the grocery server, and hundreds, thousands of people start watching the same page at the same time, the page loads for a long time and stops responding.
Conducting load testing, we determine the presence of problems at an early stage, even before the problem assembly gets on the product server. Load testing is implemented by generating a large flow of server requests and analyzing server behavior.

Business value



Measurability



Monitoring Application Performance Monitoring Performance




Monitoring application performance (application performance management) is monitoring and managing software performance and availability. APM seeks to identify and diagnose performance problems in a comprehensive manner to maintain the expected level of service. Wiki

Load testing reveals many problems even before the assembly hit the product servers and the clients started working with it. But, unfortunately, it is not always possible to predict both user actions and the impact of the difference in server resources on test and product environments. Therefore, it is necessary to monitor the status and operation of the application on the product environment. This is what the application performance monitoring serves.

Business value



Measurability



I hope this article gave you an idea of ​​what DevOps is and what needs to be done to improve the lives of developers, operations and business.

Source: https://habr.com/ru/post/303050/


All Articles