DevOps is a modern software delivery movement that encompasses agile principles and encourages automation in application delivery. Why adopt it? It allows teams to reduce errors due to manual steps and break down silos between teams to improve communication and collaboration between all stakeholders within the business.
Whether you’re knee deep in a DevOps transformation or just getting started, implementing a DevOps release management solution is an important step along the journey. Why? Because in today’s on-demand economy, organisations must capitalise on any opportunity to improve application delivery throughout the organisation, irrespective of the development processes in place.
Based on a recent discussion between Michael Azoff, principal analyst at Ovum, and Anders Wallgren, CTO of Electric Cloud, I was able to glean why DevOps release management is a must for enterprises to modernise the software delivery process and compete at a higher level. More specifically, Michael and Anders discussed the top five requirements for selecting a release management solution, which I’ve laid out for you below.
Application manifest: Model and version applications, infrastructure and middleware
This is what you’re looking for in an enterprise grade solution — a solution with ease of use in defining an application deployment blueprint, and being able to reuse it and version it and have variations to meet the complex and ever-changing needs of your organisation.
If you are doing continuous delivery and DevOps correctly, you should never have to make a change to a deployed application by hand — ideally, changes are made to the application model and then re-released into a production environment. This allows you to make and test changes in one place, and easily keep track of everything in production. Having an application manifest is a key facet for a great release management solution.
Pipeline design: Model, version and refactor pipelines, workflows and processes
This is not only an important consideration for selecting a release management solution, but also is at the very heart of continuous delivery — the ability to define and manage delivery pipelines for complex legacy applications or newer microservices. For large organisations with lots of technical and process debt, being able to flexibly model and manage that sort of complexity is essential.
Ultimately, the whole concept behind DevOps comes down to the idea that there is the 'what', the 'how', and the 'where'. The 'what' is the application manifest, mentioned above. The 'how' is the pipeline design. What are all the stages this particular application or component or service goes through? Understanding your end-to-end pipeline is very important. You need to have the end to end of what your software goes through — not just conceptually, but even physically written down somewhere.
If you don’t have that that process completely nailed down, you don’t really have a full understanding of what it takes to ship your software. Without this complete understanding, it can be much more difficult to have success. By modeling these pipelines, you allow teams to visualise the flow of value through the lifecycle, and make iterative improvements on it in a collaborative and safe manner.
Pipeline execution: Predictably and efficiently deliver legacy and CD-style pipelines and releases at scale
One of the most important things when practicing DevOps is enabling fast feedback, so getting visibility into pipeline execution as they’re occurring is very important. This provides teams an easy way to troubleshoot problems quickly, and then refactor and optimise the pipeline over time. Enterprise pipelines can be very complex and touch a lot of tools — your Dev team might be using Jenkins and Chef and Selenium, and your Ops team might be using ServiceNow and Azure cloud and Puppet.
We have customers that have more than 60 tools as part of their ultimate DevOps toolchain. For each one of these tools or services you need to make sure you’re getting the best performance possible, and operating them as efficiently as you possibly can. As you execute them, the ability to see those executions live as they happen, then collect information about them and optimise your pipeline helps to make the entire process more efficient.
Governance, security: Role-based access control, traceability, and auditability
This is one of the key functions to consider for an enterprise-grade solution. If you just tie together your release capability with tools that still require some manual steps, you’re not able to scale that. This is where a large-scale organisation, especially one that is regulated and has auditors, will want a solution that can demonstrate clearly that the whole process is governed such that no one can make a change to the process, environments or binaries without it being logged, and that any change that is made has gone through a QA and testing process. Those are the sorts of things that are really crucial for the Ops people, as they are handed responsibility for ensuring a low-risk environment.
When DevOps was starting, the overwhelming belief around security and governance was, 'Gee, this is going to really bother the auditors'. However, it turns out it is quite the opposite — to get good at DevOps and continuous delivery, you really need to automate everything. What do auditors want? They want companies to do two things:
1) Document their process
2) Demonstrate they are using that documented process
In the process of sitting down and automating your software delivery pipeline, you are essentially documenting that process. Executing that pipeline gives you the record of what you did: How did we deploy? When? Who did it? What was the pipeline that was used? What was the testing? All of those things are now available to be audited.
Integration: Works with the tools you already use
You want a solution that fits in with the tools and process that you have. It would be a non-starter to show up and say, 'Throw away all of your current tools and let’s use this new thing'. It would also be inefficient to have to change your process to fit into some tool’s preconceived notion of how your enterprise should run. Make sure you don’t have to change the way you do business, and that can help the DevOps adoption curve quite a bit.
By keeping these top five considerations in mind when selecting a release management solution, you can help ensure your journey into DevOps and continuous delivery is a much smoother, more efficient and more fruitful one. Regardless of the tools your organisation decides to use, consider first how you can make your pathway to production a competitive advantage and reap the benefits of an efficient delivery pipeline!
Sam Fell at Electric Cloud