What is Continuous Delivery?
Continuous delivery, also known as CD, refers to the ability to automate software deployment so that it’s always ready to be released into the production environment at any time. In practice, this involves dividing software releases into small chunks and performing build and unit tests continuously on all code, which results in increased release velocity.
Continuous delivery relies heavily on automation, removing repetitive manual tasks and replacing them with tools that perform them much more rapidly, and conforming to a standard set of rules that eliminate errors. By connecting multiple layers of automation, software organizations can build a deployment pipeline that continuously delivers software packages from development to operations.
Continuous Delivery vs Continuous Deployment
By implementing continuous delivery, you ensure that your code is always deployable to production at any time. However, ensuring deployability is different from actually deploying it. Continuous deployment takes the pipeline that is set up by continuous delivery, and automatically deploys changes into the production environment once they’ve passed the suite of unit, build, and security tests automatically triggered by a code check-in.
Continuous Delivery vs Continuous Integration
As mentioned above, continuous integration is one of the components of a full continuous delivery process. In order to be able to delivery software code continuously, it must be of deployable quality at all times – that means it must be continuously integrated into the full codebase. Though the name just refers to integration, continuous integration processes should involve a full set of test suites, including unit, build, and security tests, so that any problems are identified immediately upon code check-in.
How Does Continuous Delivery Relate to DevOps?
DevOps and continuous delivery are different but closely related concepts. DevOps is a mindset and a process by which development and operations align their incentives and practices to create a high-performing IT organization, all the way from coding to deployment of code into production. Continuous delivery refers to specific techniques for delivering software more rapidly and efficiently in smaller chunks – by adopting DevOps best practices and team structures, it’s easier to get organizational buy-in for building a continuous delivery process. And without building a CD process, you can’t fully implement DevOps.
Benefits of Continuous Delivery
Why implement continuous delivery practices — what’s the advantage? By deploying code and application updates more frequently, each individual update is lower risk, and can lead to zero-downtime deployments that are undetectable to end users. When software updates or bug fixes can be released incrementally as they’re produced — without waiting for the result of large waterfall-style releases — it allows organizations to deliver value to end users much more rapidly. The software performance and overall quality end up being much higher, as quality assurance and performance testing can be carried out continuously throughout the development process.
How Does Incident Management Support Continuous Delivery?
The ultimate goal of a continuous delivery process is to delight the end user by providing value to them as rapidly as possible. Any interruption in their experience must be identified and resolved as rapidly as possible – ideally before any customer is impacted.
In an organization that follows DevOps and continuous delivery best practices, agile development teams are responsible for the code they’ve written even in production: “you code it, you ship it, you own it.” When an incident occurs, there must be a clear and well defined response and escalation process, and everyone involved must have access to all the pertinent diagnostic data. Then once a solution has been found, CD processes are vital in testing and deploying a fix as rapidly and safely as possible.
After an incident takes place, an important aspect of continuous delivery is continuous improvement: understanding what went wrong and how to do better next time. This is true both for the application problem itself, as well as for the process used in handling the incident. Typically this involves an incident post-mortem in which timelines are put together detailing every step of what went wrong and how it was handled, leading to concrete steps the team can take to improve.
How to Get More Out of Continuous Delivery
PagerDuty facilitates better continuous delivery by enabling you to ship code with confidence by making it easier to deal with unplanned work. By making it easier to adopt best practice, the end-to-end incident resolution lifecycle also enables you to learn from issues and constantly improve the resiliency of your systems and processes. Try it out now for yourself with a free 14-day trial.
Applying SRE principles to CI/CD