In this post we’re going to deep dive into three most important terms used in Agile world i.e Continuous Integration, Continuous Delivery and Continuous Deployment.
Often Engineers get confused with these terms and mess up their concepts ending will false knowledge. So here we will be seeing all the three terms in depth. In this post we will be focussing only to understand the concept and differentiate these 3 terms. In depth tutorial of each terms you can find in my next tutorial.
What is Continuous Integration
Continuous Integration is a process or a development practice of automated build and automated test i.e. A developer is required to commit his code multiple times into a shared repository where each integration is verified by automated build and test.

If the build fails/success it is notified to a developer and then he can take relevant actions.
What is Continuous Delivery
Continuous Delivery is the practise where we keep our code deployable at any point which has passed all the test and has all the required configuration to push the code to production but hasn’t been deployed yet.
What is Continuous Deployment
With the help of CI we have created s build for our application and is ready to push to production. In this step our build is ready and with CD we can deploy our application directly to QA environment and if everything goes well we can deploy the same build to production.
So basically, Continuous deployment is one step further than continuous delivery. With this practice, every change which passes all stages of your production pipeline is released to your customers.

Img source: https://www.atlassian.com/
Continuous Deployment is a combination of Configuration Management and Containerization.
Configuration Management: CM is all about maintaining the configuration of server which will be compatible to application requirement.
Containerization: Containerization is a set of tolls which will maintain consistency across the environment.