What is Continuous Delivery?

Continuous delivery involves keeping software updates small and incremental, with the goal that an update can be delivered at any moment – into production, or direct to end users – without disruption, using a sustainable and scalable process.

The key outcome of continuous delivery is that software is always ready to be deployed – on demand, at a moment’s notice. This involves having continuous integration in place, with developers working concurrently on small, incremental builds uploaded frequently to a source repository – then adding on and automating extensive regression and performance tests to make sure that code can be deployed instantly, on demand.

With continuous delivery, an organization can ensure that new features, configurations and fixes are delivered rapidly, predictably, and routinely and without interfering with normal operations. This involves a streamlined process referred to as the continuous delivery pipeline, which involves uploading code to a centralized source repository, automated testing and QA, and deployment to an intermediate environment. At this point, continuous delivery enables code to be pushed to production.

continuous delivery

Download the FlexDeploy Datasheet

Why is continuous delivery important?

Continuous delivery is critical to DevOps – you cannot implement DevOps without a process to deliver new software incrementally and frequently.

How does continuous delivery work?

Continuous delivery requires that three processes be functioning: continuous integration, configuration management, and test-driven development.

Continuous integration: successful CI occurs when several developers are writing incremental code that is integrated frequently to a centralized repository.

Configuration management: management and automation of software development tasks to ensure consistency and efficiency. Breaking down complex tasks to the simplest discrete form, making software flexible and scalable.

Test-driven development: implementing a very short test/code cycle, ideally coding a single requirement to pass a single test case.

Signs of success.

Continuous delivery is a success when key indicators are achieved:

o   Software is deployable throughout the lifecycle.

o   Processes are standardized and repeatable.

o   Rapid, automated feedback is returned with any change and available in real time.

o   Push-button deployments can be performed on demand.

Continuous integration vs. continuous delivery vs. continuous deployment.

There are three ideas that are central to DevOps with similar names, which can be easily confused with one another. However, they each represent a distinct part of the DevOps process, and a separate step on the path to DevOps maturity.

Continuous integration: the first step, continuous integration is updating small pieces of code to the larger application frequently, with automated building and testing. Issues are identified immediately and resolved, while new applications and features are integrated to the larger system much faster.

Continuous delivery: once continuous integration is achieved, continuous delivery ensures that code is production-ready at all times. At this stage, code is always updated and ready to be deployed on demand.

Continuous deployment: following the consistent delivery of code to the repository in continuous delivery, continuous deployment ensures that code is automatically forwarded to production. Continuous delivery guarantees that code is always ready to be deployed on demand; continuous deployment automates pushing code to production every time.

Read more: ‘Continuous integration vs. continuous delivery: what’s the difference, and how can they add to your bottom line?’

DevOps

Benefits of continuous delivery.

Continuous delivery provides a number of benefits to an organization, including:

Low costs.

Streamlining and automation help a company to reduce errors and duplication of effort, lowering fixed costs and making the entire production cycle more efficient and effective.

High quality.

With traditional software delivery processes, errors often remain undiscovered until after the solution is released.  However, continuous delivery is a steady, repeatable process focused on the discovery of problems quickly and before an application is released to production. This means that delivered solutions are of a higher quality than large, bundled releases.

Fewer errors.

While errors may still occur during the software development process, breaking down tasks to small segments makes it easy to identify and correct an error at the source. This, combined with automated testing and a standardized QA process, means that errors rarely make it to production or the end user.

Speed-to-market.

A traditional, phased software delivery approach often includes an extended, manual testing and QA period. This delays the software delivery lifecycle. With continuous delivery, a developer can upload new code to a source code repository for automated testing and move on to the next task immediately, without waiting for manual QA and feedback. The entire cycle is completed more quickly, new applications can be prepared and released much faster, and time to business value improves.

Additional resources:

FlexDeploy for Continuous Integration

FlexDeploy for Continuous Delivery