In this blog, I am going to give you a brief idea about Continuous Integration, Continuous Delivery, and Continuous Deployment. I am sure you have heard it as CI-CD at many places but don’t have the in-depth knowledge on these terminologies. So let’s start it.

When we are developing an application, first we need to build the application. Sometimes, we need to perform certain tests before building it and make sure the test passes. The same way, there could be some other tasks that need to be done after the developer pushed the code or makes a commit to the source control management/version control system.

After every commit, there could be so many steps followed before deploying it to production/hosting platform. Now, the question arises, what if we have a Continuous Integration setup. To understand this, we have to understand what Continuous Integration is.

 

What is Continuous Integration?

Continuous Integration (CI) is a DevOps development practice which requires developers to push code into a central hub (also known as Source Code Management System) several times a day. Each commit is then verified and proceed with automated builds and run tests, helping teams to detect the problem early and easily.

As mentioned early, the tasks like running tests, creating a build, deploying the application, etc becomes tough when the developers commit the code multiple times in a day. This becomes crucial when more than one developer works on the same code and commit it multiple times.

The commit made by a developer should reflect the change in the application end without having them wait for the changes to be implemented. That’s where Continuous Integration and Continuous Deployment comes into the picture.

Before going to Continuous Deployment, let’s understand what Continuous Testing is.

 

What is Continuous Testing?

Continuous Testing (CT) ensures that every time an integration is done, pre-defined test cases are executed to make sure the code doesn’t break the existing system or environment. Now, let’s understand what Continuous Deployment is.

 

What is Continuous Deployment?

Continuous Deployment (CD) is the deployment process where you deliver software in a continuous incremental fashion and deploy frequently. Here the deployment could be in any environment in an automated way (DTAP – Development, Testing, Acceptance or Production).

 

Continuous Workflow Overview

For any process to be continuous, there must be CI, CT, and CD incorporated in the Software Development Life Cycle (SDLC). In recent years, CI has become the best practice for Software development. There are other keys which are incorporated with it. These are Revision Control, Build Automation, Automation testing, etc.

More of it, Continuous Deployment and Continuous Delivery have become the best-practice in the industry for keeping your application deployable at any moment of time and pushing the code into production whenever a new change is pushed to the Version Control.

This helps the teams to move faster with the development and even faster with the operations. And that’s where DevOps role come into place. We will go deep into the DevOps role in a different blog. Stay tuned with us.

Now when we have coined the term Continuous Delivery in this blog. Let’s understand what it is.

 

What is Continuous Delivery?

Continuous delivery is the practice of keeping your code deployable at any point. This process makes sure the build passes all the tests and be ready to push to the production at any moment of time.

 

Benefits of CI-CD

Continuous Integration and Continuous Deployment has many benefits. Below are some of them:

  1. Reduces risk – When you are deploying your code more frequent, it will reduce the risk of the project you are working on as you can detect the bugs easily. Even you can fix the bug more easily. This will speed up the production.
  2. Better communication – When you have CI in place integrated with CD, the code sharing becomes more easy and visible. It enhances the collaboration between the team members and hence better communication between the teams.
  3. Faster iterations – As the code release becomes often, the gap between the code in production and the code in development becomes much smaller. Even a small change can be pushed to the production in no time and hence faster iteration to the code.
  4. Reduces manual efforts – As the whole process is automated with CI-CD, the manual effort for the integration of tools and test will reduce and hence provides a slick flow of code to different environments.
  5. Faster feedback – Having a CI-CD setup not only help developers but also help the management to decide and act on the production changes. As the release process becomes much faster, it becomes easy for a manager to see the changes and take fast business decisions.

Now, we understood the difference between Continuous Integration, Continuous Deployment, and Continuous Delivery. Let’s move to a different term called “Pipeline”.

 

What is Pipeline?

Pipeline is a very vital term in CI-CD system. It is a sequence of steps followed when a change is made to a project. The steps can be Source Code, Build, Database, Artifacts, Environments, Deployment or Configuration.

When a code is committed, CI Pipeline makes sure the build to run and testing (Continuous Testing) to begin. Once it is passed from the CI Pipeline, it moves to the CD Pipeline where it is reviewed and passed to other environments and at last to production.

 

Continuous Integration – Continuous Deployment Tools

Here is the list of most widely used CI-CD tools in the market:

  1. Jenkins
  2. Bamboo
  3. TeamCity
  4. Microsoft VSTS
  5. Travis CI
  6. GitLab CI
  7. Circle CI
  8. Codeship
  9. AWS Code Pipeline
  10. Go CD
  11. Urbancode deploy

 

Conclusion

In this blog, we went through Continuous Integration, Continuous Deployment, Continuous Delivery, and CI-CD Pipeline. We understood the difference between them and the benefits of having a CI-CD setup in our organization.

We are creating a full CI-CD practical workshop and documenting the same in a different blog.

Stay tuned with us @ linuxnix.com.

 

The following two tabs change content below.
Hello, my name is Ankesh and I work as a Sr. DevOps Engineer in an IT firm where I have hands-on experience in supporting and automating deployments in the cloud, leveraging configuration management and DevOps process. I like to keep myself always in the learning path and love to share knowledge with others. One of my other interests is Graphics Designing and my hobbies are Cooking and Playing Cricket.