Continuous Delivery
A software development practice where code changes are automatically built, tested, and prepared for release to production, ensuring software can be deployed at any time.
Also known as: CD
Category: Software Development
Tags: software-engineering, devops, automation, ci-cd, continuous-integration
Explanation
Continuous Delivery (CD) is a software development practice where code changes are automatically built, tested, and prepared for release to production. The key distinction from Continuous Deployment is that Continuous Delivery requires a manual approval step before deploying to production. This ensures that software can be released at any time with confidence, even if the actual deployment is triggered manually by a human decision.
Key Characteristics:
- Always releasable: Code in the main branch is always production-ready
- Automated pipeline: Build, test, and staging processes are automated
- Manual gate: Human approval is required for production deployment
- Low risk releases: Small, frequent changes reduce deployment risk
- Fast feedback: Issues are caught early in the pipeline
The typical Continuous Delivery pipeline flows from Code to Build to Test to Stage, then requires Manual Approval before finally deploying to Production. This allows for preview and QA environments to be automatically created while maintaining human oversight for the final production release.
Continuous Delivery vs Continuous Deployment:
While both practices automate the build and test phases, they differ in the final step. Continuous Delivery requires manual approval for production deployment, while Continuous Deployment is fully automated with every passing build going straight to production. Continuous Delivery offers lower risk tolerance and on-demand release frequency, making it suitable for organizations that need human oversight before releases.
Benefits:
- Reduced deployment risk through automation and smaller changes
- Faster time to market with streamlined release processes
- Reliable, repeatable release process that minimizes human error
- Better collaboration between Development and Operations teams
- Higher confidence in release quality through comprehensive testing
Related Concepts
← Back to all concepts