In Byung-Chul Han’s book “The burnout society” the philosopher paints the picture of a postmodern world governed by the notions of multitasking, speed, and effectiveness. Leaving aside the criticisms Han makes against these notions, we can agree that he is spot on: we live in a world that’s moving at breakneck speed.
This poses a challenge in competitive markets. Companies that strive for growth and improvement tread a fine line between speed and quality. Go fast and you risk a drop in quality, focus on quality and you might stagnate and lose ground to more innovative products.
Approaches like DevOps try to strike that fine balance, incorporating automation into the integration and deployment process to minimize development time invested in these areas.
When done correctly a CI/CD pipeline translates to less debugging and more time developing and innovating. According to Forrester Research Inc., 38% of companies that implement DevOps see at least a 10% growth in the following year.
But what about the other 62%? Some companies take longer to see significant growth while others fall to one of the many pitfalls that come with implementing a pipeline. Implementation without foresight has always been a recipe for disaster and CI/CD pipelines are no exception.
My intention isn’t to dissuade projects from implementing CI/CD pipelines—quite the opposite. No project can hope to innovate, survive, and scale in a competitive market without a reliable deployment and integration strategy.
What is a CI/CD pipeline?
The traditional Software Development Life Cycle (SDLC) looks something like this:
- Deployment and maintenance
SDLC has been the industry standard for over 60 years (and counting). It started in the 1960s as a means to develop large-scale functional business systems. And the methods initially developed for each stage have remained similar throughout the years.
As effective and reliable as those methods are, it’s hard to disagree that they are a product of their times. Both processing power and data transmission were extremely limited 60 years ago. Integration took time and effort, deployment was done on-site, and testing required dozens of hours manually checking for errors.
Thanks to AI and increased connectivity, the process of integrating the team’s work and deploying directly to the client can be automated, increasing quality and speed exponentially. In a nutshell, that’s what a CI/CD pipeline is.
If we define integration as the process of incorporating the code from different developers, then continuous integration is creating a set of practices that allow the team to constantly push new code to a common repository.
CD can be understood in 2 ways. First, continuous deployment, in which the product is automatically tested and deployed as soon as an update is available. Second, as continuous delivery, in which the product is automatically sent to the client.
What are the benefits of a CI/CD pipeline?
Machines are faster than humans on almost every level, therefore automation tends to be synonymous with speed. The biggest benefit you can draw from a thought-out pipeline is faster development and delivery times.
Let’s say that you have a setup in which all developers have to integrate their code to a Git repository every 24 hours. Since you are delivering in smaller chunks, it’s easier to review the code and find bugs early in the process.
Now imagine that instead of having every piece of code manually reviewed by a project manager, you have an AI that automatically spots errors.
You now have a pipeline in place that frees up development time. The team has to spend fewer resources reviewing their work and backtracking to fix bugs. Resources that can now be invested in further development.
As for deployment and delivery, instead of having to manually upload the project to production, everything is handled automatically by the pipeline. Unit tests are run to make sure that the project is working as intended, as if there are no errors it’s seamlessly deployed to the user.
The hurdles of implementing CI/CD pipelines
If you are liking the sound of a CI/CD pipeline, then you are not alone: the adoption of the DevOps culture is on the rise. But there are a few caveats.
First, creating a fully automated CI/CD pipeline requires a certain set of skills. Some of them can be learned by any software developer, but having a DevOps engineer on your team is almost a necessity.
Finding a good DevOps specialist isn’t difficult, but it is expensive. In fact, DevOps is one of the highest-paid positions in the technology field. Additionally, in most cases, other developers will have to be trained to adapt to the specifics of your pipeline.
When you add the investment in new technology on top of the training costs, you start to see the second hurdle. CI/CD pipelines have a big upfront investment both in terms of resources and time.
CI/CD pipelines are also notorious for having a very steep learning curve, and while that can be somewhat mitigated by hiring specialists, it shouldn’t be implemented if the team is in the middle of a project with a tight deadline.
Another point to keep in mind is that legacy systems rarely support CI/CD. Before migrating to an automated pipeline, it’s very important to run diagnostics to find problematic hardware or software that has to be upgraded.
Finally, DevOps culture requires a strong commitment to quality and discipline. A pipeline can be top of the line, but if the team misses their integration deadlines or if they don’t fix an issue raised by a unit test, it’s a wasted effort.
Should I implement a CI/CD pipeline?
As I said in the beginning, a good pipeline is worth the time and effort, even if there are hurdles. Once everyone acclimates to the process, you’ll see amazing results.
Having said that, the decision shouldn’t be taken hastily. Automated pipelines are better suited for big projects with a lot of resources. Small teams and simple projects can incorporate some automation into their processes without having to establish a full-fledged pipeline.
Before taking the plunge, it’s a good idea to hire consultants that can assess the potential costs and risks of implementing continuous integration and delivery to your processes. Make an informed choice, one that suits the needs of your business.