Hi to everyone reading this.
We are currently on our series on DevOps in which today we are going to discuss Continuous Delivery as a practice. Continuous Integration and Continuous Testing has changed the whole SDLC in a very positive way.
Continuous Delivery is a practice in software development where every code change is automatically prepared for release to production. This practice aims at getting all the changes, bug fixes, new features, and configuration changes into production in a safe manner so that it reaches the hands of the user faster. It is considered a crucial practice as with its proper implementation, the team gets ready to deploy application code which has already been through rigorous testing.
This practice gives developers the capability to cost-effectively automate testing beyond just unit testing enabling them to verify updates thoroughly and all sorts of changes across multiple environments beforehand. This is a way to achieve a low-risk release of the product which is well adapted to customer feedback or to customer requirements. Owing to the collaborative approach of all the teams including development, support, operations, and test under the DevOps the all the build, test, and release processes get streamlined and hence add value to the business. The idea is all about consistently improving and sticking to the pursuit of delivering a high-quality product as faster as possible.
Continuous Delivery Vs Continuous Deployment
The very basic difference between Continuous Delivery and Continuous Deployment is that of manual approval for production deployment in continuous delivery. Whereas no such approval is required in continuous deployment and production happens automatically.
Continuous delivery has a key concept of deployment pipeline which targets the problems associated with tedious processes in the development, testing, and production.
The deployment pipeline technically has three components: visibility, feedback, and continually deploy.
- Visibility — This provides visibility to every resource in the delivery system including building, deploying, testing, and releasing leading to better collaboration.
- Feedback — A good and strong feedback system within the team members provides an advantage to swift error spotting, tracking, and fixing.
- Continually Deploy — Owing to the fully automated process, it is easier to deploy and release any version of the software in various environments.
Benefits of Continuous Delivery
- Automated Release Cycles — We can achieve swift and efficient software delivery owing to the fact that teams can automatically build, test, and prepare code changes for release to production.
- Faster Rate of Bug Identification and Fixing — Using this practice our teams can detect and act upon bugs way earlier so as to stop the crisis caused when they become bigger and larger. This can be achieved with frequent and comprehensive testing.
- Enhanced Developer Productivity — Continuous delivery increases productivity as it provides our teams a breather from the complex manual tasks which eventually reduce errors and provides us time to add value and improve the processes.
- Faster Delivery of Updates — Teams can deliver updates to clients more frequently owing to continuous delivery as they will have a deployment-ready build that has been verified and validated.
Challenges in Achieving Continuous Delivery
- Domain Related Limitations: Few domains need in-depth and rigorous testing before the new versions of applications are set out. For example, applications related to medical, telecom, etc.
- Lesser Test Automation Coverage: Many times in the absence of test automation coverage, developers feel unconfident and hesitate from using continuous delivery. This also is true when we have flaky test scripts in the automation suite.
- Inconsistent Environments: Various environments used in the development, testing, and production at times might lead to certain issues getting missed or remain undetected to the production environment. Also, inconsistent environments bring too many white noises during scripts automation which stops the adoption of CI/CD.
- Human Touch is Irreplaceable: Many quality checkpoints can be missed by an automated approach. A human intervention becomes critical in verifying some quality attributes which might slow down the delivery pipeline.
So folks meet you soon with our next article on Continuous Monitoring.
Hope you are enjoying this series and finding it helpful. We are open to your feedback, suggestions, or request. Feel free to write to us at email@example.com
Originally published at https://www.qekafe.com on August 3, 2020.