A lot has been written on this, but as we are often talking to our clients about 'DevOps transformations' it is worth saying a few words on this. The bottom line is that DevOps is a movement, a new way of thinking about what 'good practice' is for operations and development. This entails changes to how Dev and Ops use technology, how teams are structured, and how teams act and think.
It's a new way of thinking because, in the past, good practice for Dev and Ops was considered in silos. The Dev engineers used their toolsets and operating processes, the Ops guys theirs. Each had different metrics they measured success against. Dev was all about getting code out. Ops was about safeguarding the production environment which often meant throttling the speed and scale of new software into the live environment. Good practice in the past was about a 'healthy' friction between the Dev and Ops teams, each challenging the other.
Now with DevOps there's a focus on radically overhauling that model to have Dev and Ops folks working collaboratively. This means changes to the end to end flow of development to production. Books like the Phoenix Project have pushed this point. IT is the factory of the modern day business, and so it is paramount that a smooth supply chain exists from development to production as this is vital for digital product speed to market and customer quality.
So let's make this real. What does DevOps look like? It features lean IT production lines. There is a collaborative culture. Dev and Ops teams have access to one another’s environments with a greater level of trust involved. There is prolific automation of software development, testing and release, with the same tools being used by Dev and Ops engineers. There may be automation architects/engineers to support this. Dev and Ops share performance metrics - each understands the need for speed to market and ensuring the software is supportable once live. Continuous Delivery is in place - large, big bang releases are to be avoided. Agile and Extreme Programming are the norm. Organisation structures between Dev and Ops will be focused on enabling closer collaboration between the two, rather than creating two silo towers.
So if I had to sum up my definition of DevOps, I'd say it is about the good practice of Dev and Ops teams working collaboratively together to continuously improve the end to end IT delivery cycle from Dev through to production release and support.