A colleague asked me to define DevOps...
A colleague asked me to define DevOps. I managed to give a fairly sensible answer, calling it an operating model to produce electronic services: the model seeks to automate IT service activities linked with software development. Methods of agile development and continuous integration and delivery are used in developing software. But I was left wondering about the question, and how to understand the answer.
As software from the time before DevOps is still in use, it is easy nowadays to make comparisons with software from today which develops the DevOps model. My responsibility as a developer used to end with the completion of the software, and at the end of a successful project, the software was left in the hands of maintenance. The form of development was a project which had a clear conclusion.
My responsibility as a developer used to end with the completion of the software.
Already then, the goal was a long life cycle for the product with a minimum of dependencies in order to make the operating system easier update, for example. As the software in the past 20 years has comprised WWW software and at CSC it has been authenticated by Haka for the past 10 years, the httpd and shibd of the operating system package have naturally been used in all of them. However, their settings and updates have been part of the maintenance Ops, and as a developer I have not always even had access to production machines.
At CSC the Ops practice has been a test machine in which maintenance has tested the changes in the operating system and in the packages before production. The model has worked to a varying degree. For example, a larger shibd update from 2 to 3 has succeeded with some services and not with others. At its most concrete, DevOps involves the automation of this (and generally, making it the work of the developer).
Automating involves much work, and many developers need to learn new things, so consideration is needed before taking it into use, especially considering the great shortage of developers available. But the work is expensive and there also seems to be a shortage of people doing maintenance, so DevOps is clearly the direction of development.
Software development becomes continuous.
The greatest problem is that the changes were unknown at the time that the software was written. This makes it necessary to create tests for many things that do not actually change in the future, but these are also useful for ensuring that the software works. In addition, perfect success is impossible. The vastness of the change is surprising, especially over a long period of time, and tests cannot cover it: software development becomes continuous.