DevOps (development and operations) is a practice of continuous software development and support. The DevOps methodology is intended to bridge the gap between the interests of development, QA, and maintenance teams, increase the efficiency of software development, and fast-track the release of new versions. To achieve this, DevOps integrates development, testing, and maintenance processes. The methodology is conceptually similar to Agile, but with a greater emphasis on organizational change.
The DevOps methodology provides for standardized development environments and automation of routine processes at every stage of the development cycle. It uses a set of tools that typically includes:
- Collaboration and planning resources, such as instant messaging services and task tracking tools;
- Version control systems for regular updates;
- Configuration tools that allow the use of one template on multiple devices;
- Continuous integration tools that simplify version management;
- Containerizing systems that automate application deployment and management;
- Automated tests and bug-tracking tools.
The product life cycle from a DevOps perspective
The product life cycle in DevOps may vary insignificantly from product to product. The overall workflow, however, looks like this:
Imperfections detected at the final stage form the basis of future patch planning and development of the next version.
DevOps and security
Security checks are often postponed until the last moment or skipped altogether when using the DevOps methodology. Development and maintenance teams fear that thorough security testing would substantially slow down the process, giving competitors a head start. The DevSecOps methodology was created for integrating security into the DevOps development cycle without a substantial slowdown of the processes.