Getting Started with CI/CD
Part 1 of 3
We’ve been getting numerous inquiries lately about setting up automated software development and deployment pipelines. Arguably modern application DevOps practices require continuous development, testing, integration, delivery, deployment and monitoring. Why? Complexity! Yes, software development, especially with teams of programmers, is far more challenging than at any time in history. Users expect IT professionals to deliver high-quality, high-performance solutions on regular intervals, leaving little room for error. If your team is thinking of getting started with CI/CD, we’re here to share details on why and how you can do so.
What is CI/CD?
Continuous integration (CI) is a framework for development teams to implement incremental changes and check in code to source code repositories frequently. As the integration process is completed, continuous delivery (CD) kicks in. Continuous delivery automates the delivery of applications to the infrastructure environment. CI/CD requires continuous testing to deliver quality code and applications to users.
The Case for Implementing CI/CD
CI/CD has become a way of life for many software development teams. The advantages are substantial and numerous. We often hear, however, managers say “it will slow us down” or “we don’t have time to implement that”. Like many tooling efforts in software development, short term pain (and it really isn’t that painful) is long term gain.
First and foremost, testability improves due to smaller, frequent changes. Finding problems “as they happen” is far easier to manage than finding them weeks or months later. Think about trying to remember why you did something 90 days ago, as opposed to an hour ago. Unit testing, build testing, automated testing…they all make development results better.
Regular testing mitigates technical debt. Overall code quality rises and stays higher with regular merging and testing. Especially with regression testing, overall quality should improve since testing unearths conflicts that happen over the lifespan of the system.
The time to resolve major problems later far exceeds the time to resolve small problems earlier. The complexity of software in a team environment grows over time. Unwinding changes after months takes more time. Even on an implementation basis — automation of the test and build — time is saved.
With regular updates, from merges, testing, and deployment, the feedback loop is much tighter. Bugs caught at the merge and internal testing level save user time (dealing with errors) and even when bugs make it to deployment, they can be fixed sooner. Using continuous delivery/deployment streamlines resolution.
Delivery velocity increases when automation drives the process. The system, not humans, does the heavy lifting of merging, testing, and delivery of the application, so more time is available to work on code. In an era of intense technology competition, fast movers have an advantage.
An option of continuous deployment is scheduling them during off-peak hours, when resources are available at lower cost.
The end-game is delivering a good customer experience. Fewer bugs, more features, regular updates — a recipe for happy customers. For SaaS, the enemy is customer churn, and bugs drive churn. High quality releases help mitigate churn.
Speed of Innovation
With more high-quality code deployments happening, that translates to time for building new features. Call it “Innovation Velocity” — you’ll be able to do more in less time, which creates competitive advantages.
Teams are happier overall because they’re freed from the tedium of testing. Automation removes drudgery and puts more time back on the clock for productive programming.
The best developers prefer using best practices like CI/CD. Thus, recruitment is a factor. In addition, onboarding new developers is easier since their work will go right into the testing workflow, helping make them productive faster.
Getting Started with CI/CD
Ideally, you start with a code repository and then move into automation. But it’s really never too late getting started with CI/CD – short term investment, long term gains. We’ll be posting additional details about how you get started in this series of posts. In the next article, we’ll break down the most popular tools of the CI/CD trade.