Faster, higher, further – Continuous integration and DevOps with EXAD 2.0
Continuous integration and DevOps
We are always working to fulfil our mission: to provide our customers with the best possible software. Optimising the development processes is part of how we achieve this. With continuous integration and DevOps, we’ve established procedures that enable a new level of quality, automation and, in turn, profitability.
What are continuous integration and DevOps?
Continuous integration is an agile software development technique. The term encompasses a coding philosophy and a set of methods created to help software developers regularly integrate minor code changes. It also allows pieces of code to flow into version control repositories on a regular basis. This development method continuously expands and improves software. The new releases are leaner with fewer features. Customers therefore benefit from faster feedback and an improved user experience.
There is no certification basis for DevOps. The term can most accurately be understood to describe an operating procedure that contrasts with earlier methods. Our conception of DevOps mainly refers to the design, implementation and application of a CI/CD (continuous delivery) process as part of software product development. In the context of CI/CD, we also talk about pipelines that process various steps through automation. All tasks other than the content checks of new or changed features are performed in automated pipelines like this.
Abbildung 1: Effizientere Prozesse und bessere Ergebnisse durch den neuen Entwicklungs- und Feedback-Loop von EXAD.
Abbildung 1: Effizientere Prozesse und bessere Ergebnisse durch den neuen Entwicklungs- und Feedback-Loop von EXAD. |
In a CI/CD process, the software is integrated and provided/delivered continuously with all dependencies for each change. The process also includes:
- Analysing software sources and dependencies for typical errors and known security vulnerabilities.
- Creating a new software version from the software sources taking all required dependencies into account (build).
- Testing the software at various levels (unit and integration tests)
- The software version created and tested in the previous steps is now also automatically delivered to an integration environment (INT) where further tests (end-to-end tests, smoke tests) are performed automatically.
To date, all of these steps are performed in a completely automated pipeline without human intervention. The next step deploys the new software version in a QA (quality assurance) environment modelled to be as close as possible to the productive environment. The technical delivery is also carried out here in an automated pipeline. However, the product owner gives the final go-ahead. In this system, (interim) results can be verified with the (future) users. If a software version has been successfully verified in the QA environment, that version can then be delivered to the productive environment. Here, too, technical delivery is automated in a pipeline. Finally, additional automatic smoke tests can be can be performed in the productive environment to ensure that no serious problems occurred in the last step. These tests have usually already been run in the integration and QA systems. However, since the INT/QA and productive environments can never be completely identical, this step serves as an additional assurance. In any case, the verification process generates feedback which can then be incorporated into the further development of the software, thus closing the circle.
The benefits of continuous integration
Implementing CI/CD processes has several advantages. Each additional automatic step implemented increases the effectiveness of these benefits.
An obvious advantage is the avoidance of repetitive manual activities. Automating work steps frees up developer resources to be used for value-generating tasks.
The second advantage, though, is far more significant. Using a CI/CD process can raise software quality and, in turn, the reliability, security and maintainability of the software to a level that would not be achievable without automation. After all:
- Manual processes are always prone to errors.
- Although errors also occur in automated processes, they can be permanently eliminated with a one-time correction.
- Although the scope of an automated test suite grows more slowly than the scope of a manual test suite (with the same amount of resources), the “time” test coverage (how often can I run the test?) is already higher starting with the first automatic test.
- Over time, this also allows for a “spatial” scope of testing (how much of the code is covered by testing?) that is larger than what is possible with manual testing.
The third advantage is probably even more important to users than the second. A CI/CD process can greatly improve the time-to-market for new features (and also bug fixes). If no manual testing is required, a new version can be deployed faster in the QA or even the productive environment. This enables faster feedback, thus supporting the agile development process and allowing valuable improvements to be delivered to users more quickly. In addition, the effort invested in implementing misunderstood features can also be minimised. More resources are then available to make further improvements.
Summary
With EXAD 2.0, the CI/CD process configuration is already showing marked improvements in the quality of software development. The steps implemented so far have proven very valuable. This is demonstrated, for example, by the fact that a tested software version is available every morning to integrate the results of the previous day. With the help of pipelines, this new version can then be delivered and reviewed independently by employees without deep technical knowledge. Customer feedback confirms this is the right course. That’s why we’ll continue to invest in DevOps in the future.
Author:
Marius Meldau
Senior Software Developer
PROMOS consult
Other articles by this author: