Delivering software development is always challenging in terms of effectiveness, quality and secured product. In order to utilize the people and other resources, maintain the quality in faster development and maintaining the security and make the application complies with the security policies, we need structured workflow or process or strategy called a delivery pipeline. As days go by, The
deliverypipeline evolves by adopting cultures like Devops and DevSecOps. So other new strategies called Continuous Integration, Continuous Deployment, Continuous delivery came along.
Delivery pipeline in software development life cycle is the process/workflow/strategy of driving the development process from product’s story backlogs to deploying it to the live production system. This constructive workflow will ensure the conversion of backlogs -> features -> tasks -> build -> packages -> deployment. This entire life cycle needs a lot of collaboration and communication between teams and stakeholders. So the
Say we have a project of building e-commerce website. So, we are targeting couple of features to be delivered on the particular Sprint. Assume we have java based platform, GitHub as the version control system, Linux based machines for serving the website.
So, Delivery pipeline starts with assigning features to developers as tasks. Once Developers are done with the coding, Versions of their codes will be pushed to the version control (In our case GitHub), Once the code is merged with the respective branch (Environment specific), Build tool (In our case, Jenkins) should trigger the job to build the committed code & and get the Package out of it. Then Trigger the Configuration Management tool (In Our case Ansible) to deploy the package to the servers. So enabling tools like Jira, Slack and other tools will enable communication between the teams.
In order to speed up and make a quality software product, we need to customize the strategy. Continuous Integration is one of the best strategy or practice that helps to quickly deliver a quality software product.
Continuous Integration is a development Practice where developers integrate their code in the shared version control system often in a day and each commitment is verified by the automated pipeline which will check-in the new code, Build and run the integration testing to ensure the problems and defects early as possible
By Integrating the code frequently, back-tracking or troubleshooting process become very easy and this process will avoid long integration before delivering the product. This
- Finds the issues and clear
itas early as possible
- This will help developers to spend less time in debugging and spend more time
indeveloping new features
- this will enable good communication between developers and other stakeholders.
- This will avoid the tense long integration after the week of
Continuous Delivery is the development strategy that delivers the integrated code into the respective environment, Like QA then Stage. Once the feature is tested in terms of build and the business point of view, Code will be built as a package that is ready for the production deployment.
Continuous Delivery is one more add-on for the Continuous Integration. By adding this, This will ensure following more advantages over the Continuous Integration
- Low Risk in integrating bulk code
- Deliver to the environments as fast as possible
- Enables Communication between Development and Operational teams.
- Makes the new features available for the test and review will enable more agility
Continuous Deployment is the strategy that it is the next step of continuous delivery which will deploy the integrated code into production as soon as it is delivered and verified by the QA or other testing environments.
So the Basic Difference between the Continuous Delivery and Deployment is that the Continuous delivery is the automated repeating process till deploying the changes in QA or Stage or UAT. Where in, the Continuous Deployment is the completely automated process of deploying the packages into the production frequently as soon as the package is ready.
Get the DevOps Handbook to learn DevOps [The DevOPS Handbook]
Stay tuned to get more whispers of Digital Varys
Experienced DevSecOps Practitioner, Tech Blogger, Expertise in Designing Solutions in Public and Private Cloud. Opensource Community Contributor.
3 thoughts on “Delivery Pipeline – Continuous Integration VS Continuous Deployment VS Continuous Delivery”
Very organized and well-written blog Prabhu! I had read a blog just minutes ago about best deployment tools (https://www.cloudways.com/blog/continuous-deployment-tools/#gitlab) but they only mentioned about the features, although, I like the way you differentiate btw CI and CD. I’ll be taking links for this blog for my future articles. Much thanks! 🙂
@Admin, you can remove this comment as the link is invalid.
Thank you 🙂
Very organized and well-written blog Prabhu! I had read a blog just minutes ago about best deployment tools (https://www.cloudways.com/blog/continuous-deployment-tools/) but they only mentioned about the features, although, I like the way you differentiate btw CI and CD. I’ll be taking links for this blog for my future articles. Much thanks! 🙂