Basic Knowlege About CI-CD
In this article, we will learn some basic knowledge about CI/CD. And look at how you can grasp these concepts and implement them in your real-time projects.
At the end of this article, we will learn below concepts,
- What is a Continous Integration?
- Why do we need it?
- What is Continous Delivery?
- What is Continous Deployment?
- Tools used for CI/CD
Now, let's begin,
In the past, when clients give us a new project which is of duration of >1 or 2 years for example. In this case, we cannot ask our client to wait for 1 year to deliver the project.
Things are changing very rapidly nowadays. So we need to provide continuous feedback throughout the project.
That's why we are using a approach called AGILE. In Agile, it's possible to deliver the product by 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. it is like Write, Commit & Test.
This process is called Continuous Integration, Integrating modules to a shared repository very often. Instead of committing the changes at the end of the day, the moment you change the code and the unit testing is successful, integrate immediately to the repository so that the automation test will be done on the server.
Now let's talk about CD, we have to parts in CD
- Continuous delivery
- Continuous deployment
People often mix those two terms, but they are not similar in the real-world. So it's important to understand delivery & deployment.
For eg, when the client asks to you show the progress on the project, we already performed a continuous integration process earlier and our repository holds all the latest changes done. 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 things are working as expected and make our client happy above that we can check the performance of the system. In simple words, Integration is pushing the code, Delivery is making code available for 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 a Continous deployment.
Some companies only prefer CI & Delivery and prefer manual deployment into production.
Tools for CI/CD
Jenkins, AWS etc
Hope this article helped you to gain basic knowledge about the CI/CD process.