Many organizations are adopting DevOps to help streamline their software development processes. The benefits of DevOps have been discussed and written about often on this Blog and at many other sites. Like any method of working there are many aspects to DevOps and a lot of chatter about certain parts of it. It’s important to realize that a successful DevOps adoption, that will streamline your development process, needs to be more than just adopting one of the headline components of the methodology. We discuss some of the major components of DevOps below. Adopting these on their own does not mean you are doing DevOps. It needs to be a combination of these, and more. With that in mind.
DevOps is more than…
One of the major parts of DevOps is getting your development and Operations teams to work more closely together. Indeed, the name DevOps is a reflection of this. Just putting these two teams in the same open plan office, with the seating arrangements mixed up to ensure Dev and Ops talk to each other, doesn’t mean you are doing DevOps. Granted mixing the teams up like this is something to consider (as long as developers have a quiet space to work in), but it is not enough on its own. Staff need to be able to perform the tasks usually performed be colleagues in other departments. With developers doing system admin tasks when they need to, and operations staff scripting builds as required. An earlier post on this Blog discusses cross functional teams in more detail.
There are many tools that can be used to help work in a DevOps manner. Popular tools like Puppet, Chef, and Ansible are marketed as DevOps solutions. These tools, and many others both large and small, are great. But adopting one on its own doesn’t make your development process DevOps overnight. The tools need to be used in conjunction with new processes and team structures. All processes benefit from use of the right tool. But design, planning, and proper use of tools is also crucial to all endeavors, including adopting DevOps.
A major goal of a well tuned DevOps process is continuous development, integration and deployment. An important part of this is workflow automation to ensure that all processes in the development, build, testing and deployment chain are automated and don’t need human intervention. Whilst this is a big part of DevOps, and doing this is a big step on the DevOps path, it is not enough on its own. Many automation and scripting tools are available to help build a continuous process. Each organization will have their own favorites and internal champions for one tool or scripting language. We discussed Microsoft PowerShell in this context in a previous post.
It should be becoming clear from the sections above that DevOps is not something that can be implemented with an off the shelf solution. Be very suspicious of anyone who says they can provide you with a way to quickly implement a DevOps process. No single tool, organizational change, or tweak to your development processes will turn your organization into a DevOps team. But using them all in combination over time will, with incremental benefits along the way as you implement and adjust all the levers of the DevOps process. The first post on this Blog has more information on DevOps implementation.