When a team develops software together, the need for continuous integration (CI)—and often continuous delivery (CD) as well—is rarely debated. The central continuous integration server acts like a referee and a quality control manager by constantly building and rebuilding the software before testing and retesting it. The sooner the CI server finds problems, the sooner they can be fixed.
The real debate is whether to host the continuous integration process yourself or offload the work onto one of the many cloud-based CI/CD services that have blossomed. Letting someone else do the work is always attractive and the services can often be faster because they share a pool of powerful machines that can run the different tasks from the CI process in parallel.
But the downsides can be significant. If your team is especially worried about access to your code or data, keeping everything on a machine that’s in your locked server room brings a warm feeling. Yes, it means updating operating systems and applying patches yourself, but sometimes that’s better than crossing your fingers and trusting someone else will do it.
If your code base is big or you produce large containers full of binaries, moving these bits across the open Internet can be slow. Many of the cloud lovers tend to ignore the latency issues and costs of shipping big blocks of data. If you’re just pushing them to the server room down the hall, you can build out a fast network that will guarantee they’ll arrive quickly. Yes, this may mean fewer pauses in your day to get a cup of coffee, but it can improve delivery time immensely.
One of the biggest advantages may be the chance to add customization to your build. The cloud services do a good job with standard blocks of code configured in the same way as everyone else and they try to offer all of the plug-ins and options, but nothing beats the control of having root access to the machine. There is no doubt that the preconfigured pipelines for many of the cloud options save time, but they can be constraining when you start to walk off the beaten path. The ability to do whatever you want makes an on-prem deployment a compelling option.