Continuous Delivery (CD) is a software strategy that enables organisations to deliver new features to users – as fast and efficiently as possible. The core idea of CD is to create a repeatable, reliable and incrementally improving process for taking software from concept to customer. The goal of CD is to enable a constant flow of changes into production via an automated software production line. The CD pipeline is what makes it all happen.
During the early days of my Continuous Delivery journey, having a Continuous Integration (CI) background, I used to wonder why we couldn’t just use CI tools for the CD pipeline. And was it really worth having an end-to-end pipeline orchestration tool?
First, let’s recall the key objectives of Continuous Integration vs Continuous Delivery:
Continuous Integration primarily focuses on building code, running tests and ensuring the code is in a “clean” state. Since the latest state of the software is the primary focus, older builds and changes are less important as you move forward.
Continuous Delivery focuses on deploying a set of changes to one or more environments. The process is typically a set of steps with decision points, parallel flows, and roll-forward and roll-back steps. Robust CD is usually a relatively complex workflow with some specialised actions – including validating component dependencies, gate controls, and rolling deployments.
(As a side note: Continuous Deployment is actually an extension of Continuous Delivery. It simply means that not only is all code deployable to one or more environments at any one time, it is deployable all the way through to production at all times. Many companies have a partially manual step before the product deployment is made, which drives them towards Continuous Delivery rather than Continuous Deployment.)
So – can CI tools alone enable Continuous Delivery?
Most of the CI tools are great at providing the capability to automate the deployment procedure. For example, you can set up build configurations for each phase – for example a build phase, a unit test phase, or acceptance tests – and also automate deployments to each environment. CI tools can technically do the deployments and execute relevant dependent tasks in each environment, which enables you to achieve CD in this way.
But do CI tools give you the confidence to release this version of the software to Production?
A deployment process is typically spread across multiple, disconnected, build configurations. Using CI tools alone can make it difficult to visualise the entire flow from development through to production. Although CI tools can enforce a workflow using scripting, they can’t easily model the complete delivery process including approvals and governance. Maintenance costs can increase dramatically as complexity is added to the CI configuration.
This is where the deployment pipeline tool helps.
CD tools provide the ability to represent your complete delivery process as a flow chart. They enable visualisation and automation of each stage of your deployment process, from check-in all the way through to production. Every step of your build and deployment process can be modelled in the pipeline to provide full visibility into your deployment workflow.
Delivery pipeline tools can usually support complex build and deploy configurations, including component dependencies, which would otherwise be difficult to achieve using standard CI tools and scripting.
With the end-to-end pipeline visibility gained from your CD tool, you can not only determine whether the application is releasable at any point (and exactly which version should be deployed) but also gain in-depth insight into your current process. By understanding where the bottlenecks and inefficiencies are in your current process, you enable optimisation and continuous improvement to streamline the delivery process.
Should you invest in a release orchestration tool for your Continuous Delivery Pipeline?
CI tools are useful in straightforward scenarios, because they excel at automating the technical steps involved in building and testing applications. For a typical enterprise that has multiple simultaneous releases as well as an array of deployment environments, geographically distributed teams, a variety of stakeholders, and strong compliance requirements, CD tools can provide a very high return on investment.
We’re happy to help guide you through every step of your DevOps journey. Contact us to have a conversation with one of our experts today!
Latest posts by Raghuram Koripalli (see all)
- Are CI tools enough for an effective Continuous Delivery pipeline? - 16th March 2017
- How service virtualization can reduce the number of environments - 20th March 2015