DevOps is more of thinking/culture in software development than a process, tool or technology. In simple terms it is to identify and automate anything that doesn’t need a human brain involvement for developing software. I would like to share my thought on how any team can approach implementing DevOps in their company or project and how simple it is.
Can you say we have implemented DevOps, if I am using docker to deploy my artifacts? It is like saying I am agile because everyday morning we do stand-up. Using a particular tool or technology wont make you a DevOps team. Also its not just about releasing software into production in short intervals. Its about releasing a stable, bug-less and maintainable software to production. No compromise with quality to automate or even anything else. We are talking a lot about it now as lots of new automation technologies and tools got evolved or should I say because people started talking about it companies started innovate in automation field 🙂 .
First important step to implement DevOps is : Identify tasks to automate or in words of “Lean Development” – Identify and eliminate waste. In context of DevOps “waste” refers a redundant task. For this talk to different team members in the team. Ask for the tasks that they do at regular intervals of time. If someone is doing something more than twice in certain period, its a candidate to be automated.
Once tasks are identified, group and categorize them. This would help in next steps where we find tools, technologies to automate them. Grouping could be based on teams executing them, systems involved or phase of software development cycle. For example tasks like quick code reviews, smoke testing application, merging with main branch etc can be grouped into CI/Build.
Now we have groups of tasks to be automated, just pick the right tools for each group. But make sure to have all the tools technologies picked for each task work with each other. Take other tools integration into consideration while picking up tool for any group.
Some tools/technologies devops teams can use are explained nicely here : http://blogs.atlassian.com/2016/03/how-to-choose-devops-tools/ . But remember tools and technologies enable you to implement your automate tasks, but its thinking and culture team needs to be developed to use them effectively.
None of the above is something new I am sharing here. Its same old good practices which we were told since long time. A DevOps professional/team is someone who has an eye to find things that can be automated and find right automation tool based on his/her ecosystem. DevOps is neither a role or specialization, I feel everyone in team needs to have this thinking just like Agile.