Basic Knowledge About CI/CD

In this article, you will learn some basics about CI/CD, and see how you can grasp these concepts and implement them in your real-time projects.
Now, let's begin.
In the past, when clients would give us a new project which is of a duration of more than 1 or 2 years for example, we couldn't ask our client to wait for one year to deliver the project.
Things are changing very rapidly nowadays, and we need to provide continuous feedback throughout the project.
That's why we are using an approach called AGILE. In Agile, it's possible to deliver the product in parts and thus will be amazing from the client-side because we will be getting continuous feedback on the delivered features.
And on the other hand, let's assume we are developing a product with a team of 5 developers. An individual developer works on individual modules & each developer is responsible to perform unit testing.
Whenever developers commit changes to the shared repository (github) there will be an automation testing, like Write, Commit & Test.
This process is called Continuous Integration, integrating modules to a shared repository very often. Instead of committing changes at the end of the day, the moment you change the code and unit testings are successful, it integrates immediately to the repository so that the automation testing will be done on the server.
Now let's talk about CD. We have two parts in CD
  • Continuous delivery
  • Continuous deployment 
People often confuse those two terms, but they are not similar in the real world. So it's important to understand delivery & deployment.

Continuous Delivery

When the client asks you to show the progress on the project, we already performed a continuous integration process earlier and our repository holds all the latest changes. So we can present a demo to a client on a dev/mock server which is a replica of the production server. 
By this process, we can check if things are working as expected and make our client happy that we can check the performance of the system. In simple words, integration is pushing the code, delivery is making code available for deployment.

Continuous Deployment

It's a bit scary because the moment we commit our code after the automation test, our code will be directly deployed to the production server. This is  continous deployment.
Some companies only prefer CI & Delivery and prefer manual deployment into production.
Tools used for CI/CD:
Jenkins, AWS, etc.
Would you share  how you feel about this blog?