Continuous Delivery
Continuous delivery is an approach where teams produce software in short cycles, ensuring the software can be released reliably at any moment. While Continuous Deployment automates the deployment of code to production, Continuous Delivery ensures that software can reliably be released at any moment, but requires human intervention to decide when to release to production.
Continuous Delivery is enabled through the deployment pipeline, which has three components:
- Visibility
- Feedback
- Continually deploy
Microservices are often used for architecting Continuous Delivery.
Benefits
- Accelerated time to market
- Building the right product (quicker user feedback)
- Improved productivity
- Reliable releases
- Improved product quality
- Improved customer satisfaction
Drawbacks
- Customer may not prefer Continuous Delivery
- Some domains may not allow
- Test automation is required
- Environmental differences can result in undetected issues
- Sometimes human validation is required