In the traditional perception, development and IT operations are fundamentally different and pursue opposing goals.
IT operations has direct responsibility for the availability, operational stability, and continuity of software generated by the development team. It needs to be made available to users in production, and this includes distributing new software releases while ensuring ongoing operations.
Application development, on the other hand, represents direct responsibility for innovation and change. The task of the development team is to lead new features/functionalities and fixes as fast as possible into production.
As a consequence, a »blame game« arises from these competing goals: application developers want to respond to requests from business departments and put new features into production, but IT operations sees this as jeopardizing the availability.
DevOps is designed to enable more effective and efficient collaboration between Dev(elopment) and Op(eration)s through complementary goals and shared incentives, processes, and tools in order to not only follow the constant change, but to be able to shape and support it. It improves the quality of the software, the speed of development, the frequency of delivery of the software, and the interaction between the involved departments/disciplines.
However, it isn’t the introduction of a new technology, a new role, or a new job title but much more a shared understanding and mindset, matter of attitude, and multidimensional view of the entire IT area with strategic dimensions.
Key aspects, indicators, and metrics of a lived DevOps approach in teams are as follows.
- Deployment frequency: how often do changes to key applications go live?
- Lead time for changes: how long does it take from code commit until the change is running on production?
- Mean time to recover: how long does it take to get a service back once an error occurs?
- Change failure rate: how high is the percentage of changes that affect the quality of a service/application?
- Downtime: how long must a system be »disconnected« in order to run updates?
DevOps is based on the harmonization of development with IT operations and the automatization of the development/deployment processes. Mutual respect and interest is the most urgent improvement in the interaction and the prerequisite for trust, good cooperation, and smooth collaboration.