Combining two traditionally diverse sets of practices – development and operations – DevOps has become one of the leading software engineering trends in the current IT world.
Despite the growing popularity and acclaimed advantage of DevOps, not all software development companies understand how DevOps methodology may be applied in their companies and what benefits of DevOps are. In the following case, we will describe how the introduction of DevOps implementation approach by Agiliway helped our client to build and automate continuous integration and deployment processes, boost the quality of their product and dramatically cut development time and costs.
Our client is a large German company working in the automotive industry. The company has several ongoing projects and three distributed development teams working on them. It often happened that when one team deployed its code on a dev server, it overwrote the code submitted by another team and brought the whole system down. Although this has been the main client’s concern, the issue masked a larger problem of the lack of proper development processes, which Agiliway set out to help with.
To address the issues the company faced, it was necessary
- to analyze the work of the teams and the development processes in use;
- to build new infrastructure and new development and continuous integration processes;
- to educate all teams on the DevOps approach and benefits of small releases.
Having analyzed the work of the teams and the existing development processes in use, Agiliway has carried out the following steps:
- We have implemented a source control management and versioning practices to establish control over all changes to the code. This way, each code revision results in the creation of a new version, which can therefore be compared or restored. Introduction of separate branches for current and future versions of the product allowed different teams to work on different new features simultaneously without any fear to impact each other’s code. This has significantly speeded up the development and eliminated code conflicts or overwriting of changes that used to be a huge pain for the client before.
- The next important step was configuring continuous integration (CI) and continuous deployment (CD) processes for automatic integration of the new code into the dev, test, preproduction and production servers.
- To ensure the stability of the code deployed to the server, Agiliway has integrated a code sniffer and unit tests into the process. A code sniffer check is the first step in code verification process. If everything is ok, a second step – a unit test – begins. If the unit test returns no errors, the code is automatically deployed on the server. Otherwise, the previous version of the code is restored, and the system notifies of the need to make changes to the code being deployed. Thus, there is no way for an erroneous code to cause a server fall.
- Another important step was unifying development environments for all the involved teams, which had to assure faster developer involvement into/switching between projects. It also helped to eliminate hardly reproducible environment-related issues, which regularly appeared when developers worked on different environments. For this purpose, we have suggested dockerization of the projects, which helps easily dispatch projects on various environments, for example a local or a test server. This allows setting up an environment for a new person on the project in just few minutes.
- Further, Agiliway has built monitoring and alerting processes that collect and analyze various information on production servers including user activity, servers/databases load, system logs, etc. It also notifies the client of any issues or suspicious activity. Such solution helps to instantly react to server issues and predict server resources needed.
- Having set up the processes, Agiliway has distributed the access rights and trained all the distributed teams in new tools and processes.
Overall, the integrated environment provided by Agiliway’s DevOps has brought the following advantages:
- new releases of the client product have become considerably faster and more frequent, as continuous integration and continuous deployment processes and early identification of errors has freed up to 20% of developments’ time;
- the quality of the product has become better due to the automatic testing and version control, which further promoted customer satisfaction;
- the time needed to involve a new person into the project reduced dramatically – from days to minutes due to dockerization;
- project needs have become more predictable and easier to respond to.
All these results giving the client a huge competitive advantage have been achieved with a minimal investment, as the client invested only in the 2-3 weeks of DevOps service needed to set up new processes and continuous integration environment and just a few work hours a week for further maintenance.
If you wish to get similar benefits of DevOps, Agiliway would be glad to help.