darren whittingham - Fotolia


Why DevOps processes and continuous integration go hand-in-hand

Continuous integration facilitates streamlined code integration and testing. Chris Tozzi explains why it should be part of any DevOps-based software delivery chain.

If you're thinking about DevOps, you should be thinking about continuous integration as well. But what is continuous integration, and what does it have to do with DevOps processes?

Defining continuous integration

Continuous integration is a mode of software development that encourages developers to make code changes to an application in small pieces, integrate those changes into the main code base and, finally, test them to make sure they work.

The goal behind continuous integration is to minimize the risk that a change to code will introduce something that causes the application to fail or perform poorly. If each code change is kept small and integration testing is performed on each change as soon as it is complete, developers have a better chance of immediately knowing if their most recent update caused a problem. Plus, it will be easier for them to roll back the change at that point without affecting other parts of the application.

Continuous integration could be considered the opposite of development techniques associated with "waterfall" delivery. Under the waterfall model, developers wait until they have written a large chunk of new code before integrating and testing it. The risk is high that some snippet of code within the large chunk will cause application problems. And if it did, pinpointing the offending change is time-consuming.

In order to streamline the process of continuously integrating small code changes into the code base, developers typically use a continuous integration server, which integrates code and tests it automatically. There are a number of continuous integration servers available; some of the most popular include Jenkins, TeamCity and Bamboo.

Continuous integration vs. continuous delivery

It's worth noting here that continuous integration is not the same thing as continuous delivery.

Continuous delivery is what happens when all parts of your application delivery chain -- from design to coding to testing to deployment -- happen in sync and continuously. Continuous integration refers only to the part of the delivery chain associated with integrating new code into the code base and testing it.

Continuous integration is essential if you want to do continuous delivery. Continuous delivery, however, requires more than just continuous integration.

DevOps and continuous integration

So, what does all of that have to do with DevOps processes?

There is no rule that says you have to do continuous integration if you do DevOps. DevOps is about cultural practices, not a specific set of tools or technologies. That said, if you want to make the most of DevOps, you'll likely benefit from making continuous delivery part of your software delivery chain.

DevOps emphasizes agile and fast software delivery. In addition, a healthy DevOps workflow allows all members of the IT organization to collaborate seamlessly. Continuous integration helps to achieve those goals by making it easy for programmers to make changes quickly, for testers to test the changes quickly and for the IT operations folk to deploy the changes with confidence.

Continuous integration also helps to create a record of code changes that all members of the organization can view when needed. Accessing continuous integration logs is a quick way for anyone to understand the current state of an application's development or to trace the origins of changes. That visibility helps to keep everyone working together seamlessly, which is the ultimate goal of DevOps processes.

Next Steps

Five key DevOps principles to apply to enterprise architecture

Learn more about how continuous integration methods improve application deployment

Learn the secrets of DevOps training from some household names

Dig Deeper on Enterprise application integration