To understand how developing applications according to the DevOps approach takes place, we will analyze it in stages. There are five of them.
Requirements Formulation And Design
The project manager describes what the business expects from the application, and the development team creates the structure of the future product and schedules the stages of its creation. Programmers, testers, and administrators are also involved in the design: they have a better understanding of the development time and the steps into which it needs to be divided.
The team, usually led by a DevOps engineer, creates the CI / CD environment and pipeline in which product development will occur. Several scripts and systems are written for versioning, project management, monitoring, and clusters for development, testing, and production are also configured. Administrators and testers usually do this.
Once the DevOps culture has taken root in the company, all these systems will be ready – they only need to be adapted for the new product.
“Our DevOps engineers at every step help developers and testers solve specific technical problems: prepare a project in GitLab for storing code, create test configurations, publish an assembly on the server, write a specific script. Even if the team has no experience and knowledge in automation processes, they will quickly master them under the guidance of a DevOps engineer.”
In parallel with this, programmers work directly on the code: they write, analyze, and control versions. Usually, the work is structured to release individual ready-made modules as soon as possible. For example, they do not work on the entire application at once, but first on the main page and the authorization system.
By Running The CI / CD Pipeline
When a part of the code is ready, the developers run the scripts prepared and automated in the previous step. These scripts turn the code into a product and take over the routine. For example, they compile code into packages, manage versions, and pass it on to testers and administrators.
“In my practice, DevOps has dramatically simplified the development of a White Label solution for banks. The product has many different assemblies and versions, each of which is integrated with a separate bank. At some point, maintaining the infrastructure for the deployment of this project began to take a lot of time from the development team, which they could spend on creating direct business value, on writing new functionality.
DevOps has dramatically reduced the time for routine testing and deployment, which helped save money and release products faster. “
The written code, with the help of scripts, goes to automatic testing. It takes place without the participation of programmers and testers and helps to identify errors when making changes and unloading code. If there are errors, the code will not go into the assembly and will not get into a working product.
For example, a new function has been added to the application. It turned out that it breaks another function, which at first glance is not even related to the new one. An automatic test will detect this and immediately report an error – the code does not even have been manually tested.
If the code changes are insignificant, after the autotests, it immediately goes to the production servers. If severe, the code is sent to the testers to test the custom scripts and ensure everything works according to the product requirements.
Developers, testers, and administrators work on virtual machines or servers with different configurations. If you carry out testing (even automatic) on a specific machine, it may not work for another code. Containerization is needed – running and testing the application in a specific fixed environment. DevOps tools allow you to automatically launch such environments, change their configurations, run tests, and deliver containers with ready-tested code to production servers.
When the configurations are tested, the automated scripts immediately deploy to production servers. As a result, software release or an update into a release ceases to be an outstanding event and turns into a routine. If there were bugs in some versions, you can fix them all day and constantly deploy minor updates throughout the day that will gradually normalize the application.
For this system to work, rigorous testing is essential. If a poorly tested application is automatically deployed, it can lead to severe financial losses.
When the application has gone to the production server, monitoring systems are connected to it. They control how the application works, write all errors to the logs, notify about problems and automatically reload and disable broken functions.
For example, the application is crashing. The monitoring system fixes it, writes information about the failure to the log, and sends a command to reboot. And then, it sends information about the failure to the developers so that they can quickly fix the error.
It is essential that in DevOps, all these stages do not go one after another but in parallel. While programmers are working on one code, another part is tested, and another part is being monitored. At the same time, administrators collect monitoring results – and at the exact moment form new development tasks together with programmers.