Continuous delivery is an iterative software development approach that ensures every change to a system can be released. The goal is to make software releases reliable so organizations can deliver them frequently, reduce risks, get faster feedback from end users, and shorten time-to-market for innovations. In continuous delivery, every code change is built, tested and then pushed to a non-production testing or staging environment. There can be multiple and parallel test stages before a production deployment. Tests may include user interface testing, load testing, integration testing, API reliability testing and others.
Continuous delivery lets developers automate testing so they can verify application updates across multiple dimensions before deploying the software to customers. Every revision triggers an automated flow that builds, tests and then stages the update. The final decision to deploy to a live production environment is triggered by the developer. Automated testing helps developers validate updates and discover any issues with the changes. With frequent, automated testing developers can discover and address bugs early in the product development process, before they create problems.
Continuous delivery lets developers more easily perform additional types of tests on their code because the process is automated. Cloud computing allows development teams to cost-effectively automate the creation and replication of multiple testing environments without affecting the on-premises environment. Open source technologies and development tools support continuous delivery with automation and lifecycle management products.