DevOps Institute will host SKILup Festival in Singapore on November 15, 2022.
Now that every organization is a software company, the pressure to produce better code faster has never been more intense. An increasing number of organizations choose DevOps to bring traditionally siloed developers and ops teams together and they count on continuous integration and continuous deployment (CI/CD) to speed up the process.
If DevOps is a car, CI/CD is the transmission that connects all the moving parts together to allow for a smooth drive. No modern software development effort can thrive without CI/CD so if you're just getting started here's everything you need to know.
What's in a Name?
Let's break CI/CD down into its relevant components. Continuous integration is a way to tackle the always tedious and time-consuming job of testing code and it does so in a way that does not add any extra burden to developers. Code tests and checks are automated and the results are delivered back to the developer. CI also allows developers to split tests and builds across different machines which cuts the time involved and makes multitasking possible.
Continuous deployment picks up where CI leaves off — tested and checked code can be automatically deployed to production using the CI server.
So, together, CI/CD represent a way to automate the most time consuming steps in software development and deployment.
The Solution to Universal Problems
Virtually every company struggles with the same set of problems that CI/CD can potentially solve.
Toolchain sprawl is pervasive — a surprising number of companies use more than 15 toolchains and that of course means time and human resources to maintain it all. An integrated out of the box CI/CD solution eliminates that problem and frees up resources for things that matter.
Even in a DevOps shop it can still feel like it's Devs vs. Ops because the priorities of the two groups are so wildly dissimilar. Devs are incentivized to create new features while Ops pros are rewarded by having a stable environment with a lot of uptime. CI/CD can help bring those opposing forces together around a single toolchain and let each group do what they do best without playing the blame game.
Code can also get stale while waiting around to either be tested or for devs to get energized about "context switching." CI/CD can tighten that loop to minutes rather than days or weeks ensuring everyone is working as efficiently as possible.
And while CI/CD is often hailed as a boon to developers, it's worth pointing out some concrete benefits to age-old Ops problems. An integrated CI/CD solution will bring automatic monitoring so error rates and infrastructure costs can suddenly be measured easily. And automated deployments free Ops pros to focus on value-added tasks rather than waiting around for developer hand-offs.
Every company knows the struggle involved in hiring tech talent but did you know CI/CD can play an important role in this area too? The Stack Overflow 2019 Developer Survey found languages, frameworks and other technologies as the most important factor for developers when looking for a job. In other words, the tech solutions a potential employer chooses matter and a cutting edge CI/CD solution in a DevOps shop offers some "sizzle" to job candidates.
CI/CD can bring solid benefits but it's vital to understand how to measure success or recognize under-performance. A good place to start is with cycle time. We like to think of cycle time as the period between starting work on an idea and delivering it to production or in to the hands of the end user. Your definition may vary but what matters is to compare cycle time without CI/CD to cycle time with CI/CD. Some companies report cycle times that took months now take hours with an integrated CI/CD solution
Time to value is another factor to consider because, done right, CI/CD should shorten that timeframe dramatically. Companies should also consider uptime, error rates and infrastructure costs.
Remember the Culture Change
When our organization transitioned to CI/CD, we noticed a dramatic cultural shift on the engineering team. Gone were the days of weekly deploys and long waits to see the impact of a code merge. Our "definition of done" changed and how we spent our time changed too.
In an internal 2018 survey, we found the delivery team spent 60% of their time babysitting deploys and 26% of their time on manual or semi-manual tasks in the 14 days leading up to a release. Fast forward to 2019 and 82% of the team said they were free to work on other tasks during the same 14-day pre-release time period.
CI/CD can bring speed, consistency and even happiness into your software development and deployment efforts. Start small, get it running and then build it out. Your DevOps team will thank you.