CI/CD
What is CI/CD?
This concept is very hot in the IT industry.Everyone is talking about this new concept.Specially to enable DevOps we are using these concepts.If you want to know about DevOps please read my previous blog post titled DevOps.
Alright we will get into this new concepts.I know many of you questioning what does these terms sounds? Why we need these concepts?Ok..Before understanding these concepts will go back few years back and talk about Waterfall model.The client says that he/she wants you to build a software.In this case definetly takes time to make the software product.Maybe 6 months or 1 year or some times 5 years.You can't simply ask your client to wait for the final product.Because things may change very fast.Client requirements might change ,there can be mis communication between you and client .So we need continuous feedback from the client. That's why the different approach called Agile took in to place.In agile you are responsible to give your client a ready product every 2-3 weeks.Not the entire product but the parts of it.Lets say if you have 10 features ,you can give 1 feature in 2-3 weeks.That will be amazing at the client side and can get continuous feedback from client.Cool..! Does the problem solved yet????
Ok..!Lets assume that you are working on a project and the project has set of modules.You have multiple developers to work on it.You have given one module to each developer to work on it.So the developer write the code and test by his/her self and verify whether the system works on his/her pc.But you missed one thing? Can you guys just guess it???? Yes you missed one thing ,that is integration testing.All the works done by the developers should be integrated in some where.Then the Operation Team take the project and deploy it on the server.But who is responsible for integrating the whole the modules??? That's where we have automation tools.Assume we planned to work for one week and every friday, we integrate the project.Then there will be an automation test proceeded. What if the automation test goes wrong due to the bugs??? Oh no, you don not want to spend your weekend staying in office and fixing it.So that what you can do to solve this problem is Continuous Integration(CI).As name suggest what if you integrate the modules in daily basis? Yes in a day you may doing 5-6 commits.After doing the changes you think its perfectly working and you just submit it to the central repository.Lets say if there are 5 developers, all of these people will commit their works to the repository.The thing automation tool does for us is every time when you commit the code there will be an automation test performed.That means in simple terms, you write the code the test it with the unit testing.Once unit test finished you commit the code and the the automation test will be done.So at the end of every commit we have ready project.Wow that's awesome.You have confidence that the entire software project is working.That is the beauty of CI.
Then what is Continuous Delivery means??
People often mix CI and CD terms together.But they are not same ,they are different.Now you know whats CI.In short terms you have your project ,you are committing very often and automation tests will be held and ready for delivery.You can simply show the working model to the client in mock up server.It not only gives the confidence to you but also make clients happy.Also you can check the performance of the system.This is called as continuous delivery.You are not deploying the software into the production server but you are keep it ready for the deployment in an any given point.Delivery is making the software available for the deployment.Now i hope you guys got an idea of these terms.
Ok, i can hear some of you asking your self then what does Continuous Deployment means?
Here is my answer.basically continuous deployment is bit scary.Ah...!Because when you commit your code and after the automation test the code will be tightly deployed to the production server.Different companies following different approaches .Some company goes for only Continuous Integration approach.Some goes for Continuous Delivery and some Continuous Deployment.Example people who working in micro services go for Continuous Deployment.Face book is one of the famous example for it.Is that all??
No! Initially you have to make the team to get ready to move on to these approaches and need a pipeline so that every step can happen in the sequence manner.There are different tools available for these approaches.Jenkins is the most commonly use tool for this. Ok, guys finally i hope this post may given you an overall idea about the new terms Continuous Integration,Continuous Delivery and Continuous Deployment.See you soon in next post.















