Continuous delivery is a somewhat confusing and debated term, but traditionally it is described as an approach to software production. The overall concept includes continuous delivery and integration, paired with build automation and configuration management. The process is similar to DevOps, but a bit more specified. It functions around a series of tests, approval, and releases. Each time a change is made, a build takes place and a test is run. The results are returned to the development team and approved or denied. Changes can be released instantly using continuous integration tools, or held off until a specified time. Businesses use this method and these tools to create a seamless user experience when updating applications and software products.
Continuous deployment tools are the largest and most dynamic tools included in this category; many provide tools to complete each step in the continuous delivery process. These are the tools that allow teams to deploy instantly as each change is made, rather than wait until multiple updates take place, then deploying them as a group. This automates the entire process, but is not intended for teams who want stricter analytics on deployment effectiveness. Continuous deployment tools are intended for those who want truly seamless, constantly updated software applications.
This development practice, and the tools enabling it, let's development teams and individuals to “check-out” portions of code from a repository. The code can be edited, changed, and updated; it is eventually “checked-in,” verified, and integrated into the overall application. This reduces the need for teams to set time aside for long, bulky integrations and software updates. The process requires multiple developers and ensures quick, significant changes that are quickly integrated into applications.
Build automation tools provide a similar development process as continuous integration tools, but limit their capabilities to only before integrating updates into your application. Developers still follow the same process. Code is still compiled, built, and tested; changes still require approval. But the products do not allow the same kind of triggers that automatically put changes into place. The products permit only the first step to automating the continuous delivery process.
Configuration management, sometimes called IT automation, reduces the burden placed on development teams to ensure the current state of an application is the intended one. These tools keep documented historical records of changes made during the continuous delivery process, and present details about the application's current state and performance. Essentially, configuration management means version management and benefits application performance control.