Maybe it is a bit late to write this article, but I found the motivation to do it because I keep listening some people using the term wrong. At this point, it has been written many literature about this word, hundreds of definitions are out there, some more accurate than others, but all have the same idea at the bottom:
DevOps shortens the agile feedback loop by merging development and operations as a whole. It maximizes the development time automating certain tasks of the workflow. It speeds up the time elapsed since a user story is planned until its feedback is gathered.
DevOps is not Kubernetes, nor Docker, nor maintain servers in the cloud, nor the release management team,…DevOps pretends to create an independent lifecycle for every user story and recreate all the stages of a complete project. The technical side behind DevOps consists in automate parts of this lifecycle. How it is done or which stages are being automated may be different in each project.
In the traditional software development models, the delivery and deployment stages are placed at the end of the project lifecycle, once it is “finished”:
It is curious about these diagrams that all end up in a phase of “maintenance”, which it is nothing else that all the rework required after getting feedback for the very first time. These are all the changes to meet the actual client requirements. When this kind observations are arisen, it means that this is not a suitable model for software development.
The key concept of all agile methodologies is the feedback loop. Understand that software development is an iterative and incremental process. Agile is not something that you use nor something that you do, agile is something that either you are or you are not. Agile methodologies bring every two weeks the feedback of the job done and it is up to you to react to it. Devops helps to be more agile supporting the development and operation tasks to change the software faster and painless.
Taking this into account, what DevOps does, using a set of tools, is to accelerate the process and obtain the feedback as soon as possible:
When we talk about devops we should not talk about tools exclusively, we should talk about the philosophy behind it and the agile principles.