We sat down and said "we need a mission statement, a manifesto, something that describes to newcomers what Devops is. At the same time it mustn't be too dumbed down for those who have been practicing the craft for years" - easy ? Nope. We realised that whenever anyone describes Devops they almost always start be saying what it isn't.
There are loads of definitions all written from differing view points, be it a Developer, a Sys Admin or Management, all have their own spin. For this group we think the sentence over at James Turnbulls blog (http://www.kartar.net/2010/02/what-devops-means-to-me/) is about as a concise one line summary as you are going to get.
In a DevOps environment, developers and sysadmins build relationships, processes, and tools that allow them to better interact and ultimately better service the customer.
Putting a definition together on a single web page (let alone a single sentence) is a big ask, we think that sentence pretty much hits the nail on the head. But from the LeedsDevops perspective let's break it down a little further in to three subject areas:
- Communication - ops, devs and managment talk.
- Collective Responsibility - "it works on my machine" is a real no-no, we're in this together
- Teamwork - help each other out.
- Continual Improvement - incremental changes to the working environment, baby steps to get adoption.
- Treat nodes as cattle not pets - Bye-bye the "I am root" philosophy, "tune" those servers by code not by voodoo.
- Cross Functional - You can still have specialisms, but Dev do some Ops, Ops do some Dev.
- Mentoring and education - skill sharing, use the team to share the knowledge and the workload (delegation is what you need).
- Rapid Change/Flexible environment - quickly swap stacks and application components for the easy life and for the bill payers.
- Everybody codes (even complex config files can be considered code) - build apps and code to help take away the pain points.
- Version Control - use it and use it well.
- Automation - Build Management, Continuous Integration, Continuous Delivery, automated testing - get good at this.
- Configuration Management - Use a provisioning tool (e.g. chef/puppet) to have configuration as code. then place the code in version control.
- Release Management - Don't forget to include QA, Tagging, Deployment tools.
- Metrics - Monitoring, alerts, log analysis, performance tuning - know when everything is OK.
We could keep adding to that list, but by far the culture section is the most important, the skills and the tools help make that happen.
At LeedsDevops we hope to create a group that can meet, share and help each other get the best out of the DevOps principles. We'd like it to be an informal environment where the experienced and noobs alike can grow their knowledge and if nothing else have a pint.
We'll not dwell on what devops isn't, a simple google will bring forth some very strong opinions on that.