Tech Insights

CI/CD: Software that’s always ready for production

The ability to respond to user feedback and ship new application code to production quickly and safely are hallmarks of successful digital enterprises. Continuous integration and continuous delivery (CI/CD) play an important role in this process. A CI/CD pipeline allows teams to dramatically speed up the process of testing new application code and readying it for production deployment. But to get the most value from CI/CD, teams must be ready to adopt new development methods.

What is CI/CD?

CI/CD brings agility and automation to modern application development. CI/CD speeds up the process of integrating and delivering code, helping to reduce the friction between development and operations teams and facilitating DevOps.

A CI/CD pipeline is one of the most important software delivery assets for building, testing, and deploying modern applications. CI/CD forges a connection between a developer commiting code and the delivery of new functionality to applications in production. Between these endpoints, the code is built into software, verified with multiple tests, checked against audit and security controls, prepared for deployment, and, in some cases, automatically deployed to production.

What’s the difference between continuous integration, continuous delivery, and continuous deployment?

CI/CD generally refers to the combination of continuous integration and continuous delivery processes. A CI/CD pipeline may also include the related process of continuous deployment where that’s desirable.

Continuous integration (CI)
CI is the process of automatically testing and building software after new bits of application code are integrated into a shared repository. This results in application builds that are in a working state at all times. Unit tests are included as part of the CI process, validating the functionality of the software, identifying bugs up front, and preventing wasted cycles later.

Continuous delivery (CD)
CD is the process of delivering applications created in the CI process to a production-like environment where they are put through additional automated tests to ensure each application functions as expected when pushed to production environments and put in the hands of real users. CD also ensures the latest build interacts with other software and applications as intended.

Continuous deployment
Continuous delivery is not to be confused with continuous deployment, which is an optional, subsequent step in which code is automatically deployed to production after going through the CI/CD process. A successful CI/CD pipeline results in builds that are always ready to deploy to production, either manually or via an automated continuous deployment process. In some cases, continuous deployment is the correct approach, but in other cases you may want to release code to production on a different cadence (say, for example, based on the ability of users to absorb new features without being overwhelmed).

How do continuous integration, continuous delivery, and continuous deployment work together?

Modern application development frequently combines these processes to deliver cloud native apps into production efficiently with greater agility and less risk of error. A properly designed CI/CD pipeline automates the vast majority of the work required to get a software build into production, from compiling and integration to compliance and security checks. Where appropriate, continuous delivery can automate the final step of pushing software into production.

What are the benefits of CI/CD?

CI/CD has many advantages for organizations that want to deliver higher quality software in less time:

Deploy software on-demand based on business requirements.
Teams that practice CI/CD can quickly release new application code to production when it makes the most business sense to do so, rather than based on predetermined release windows.

Reduce the risk of software not functioning properly in production.
Code is put through rigorous automated testing before it’s released, significantly reducing the risk of introducing bugs or broken code into production environments.

Make rapid iteration a reality.
CI/CD complements Agile development and DevOps methods by providing the functionality required to put continuous learning from users into practice, allowing teams to iterate and ship software in small, rapid batches to respond quickly to customer feedback.

Recover faster when failures occur.
In the rare instances when failures occur in production, CI/CD enables teams to reduce their mean time to recovery (MTTR) by quickly pinpointing bad code and pushing fixes to minimize the impact on end-users.

CI/CD vs. Traditional Development

Traditional Development
Software is developed iteratively in small chunks based on frequent user feedback. Software is developed in large, complex units with less timely user feedback.
Tests are written during development and applied throughout the development process to ensure quality application code. Software is thrown over the wall to a QA team for testing after the development process is completed.
Security patches and bug fixes are quickly deployed via automation. Security patches and bug fixes are delivered immediately through manual exception processes or in bulk at irregular intervals.
New application code is integrated frequently with the existing code base and tested in real-world scenarios to ensure software is always ready for production. New code is integrated infrequently with existing software—usually just prior to deployment—which occurs only in predetermined release windows.

What to keep in mind if you’re considering a CI/CD pipeline

CI/CD helps teams ship high-quality software and services faster, but it does require changes to the development workflow and the adoption of new best practices. If you’re considering adopting CI/CD, the following list will help you make the necessary adjustments:

Break down siloed teams.
With CI/CD, testing becomes part of the development process. There’s no more throwing application code over the wall to QA. The responsibility to test new code falls to development teams, requiring QA engineers to join with developers, designers, and project managers on balanced development teams.

Commit to writing a lot more tests.
To achieve success, development teams will have to write a lot more tests—including unit tests and end-to-end tests—to simulate user workflows throughout the application. This will take more time initially, but the upfront investment in testing gives you confidence in your build automation.

Stay current on important topics

Newsletter signup

Introduce new tools and automation.
While CI/CD success requires organizational and process change, teams must also agree on and adopt new CI/CD tools to develop, implement, and monitor automated CI/CD pipelines. This means incorporating new testing frameworks, modern source code repositories, artifact repositories, and CI/CD tools such as Concourse.

Rethink legacy approval processes.
Getting new software to production the traditional way often requires successfully navigating one or more manual approval processes. Re-evaluate manual approval processes that can create bottlenecks and replace them with automated processes consistent with CI/CD.

CI/CD customer stories

For too long, the speed of business has outpaced enterprises’ ability to adapt important business software accordingly. CI/CD enables enterprises to regain the initiative, so you’re always ready to improve the digital experience for customers.

It's easy enough to get a CI/CD pipeline set up and operational for one team or even a handful of teams. But in a large organization that requires compliance, governance, and coordination across hundreds of teams, putting good build pipelines in place takes some enterprise initiative. Learn how The Home Depot scaled CI/CD across the organization to get all the benefits of cloud native without sacrificing key enterprise requirements. Watch
Implementing CI/CD can be a challenge. Add strict compliance requirements and the task is harder still. That didn’t stop Cerner. The healthcare solutions company uses Concourse for VMware Tanzu to move code from development to production in an ISO 9001 environment. With Concourse, code goes from development to production much more quickly. Watch

CI/CD at VMware

VMware has the expertise and the advanced tooling to help put your team on a path to CI/CD success

Team perspectives

CI/CD is the natural evolution of agile development. VMware experts help your team understand the value of CI/CD and related capabilities—and the path to get there.

VMware CI/CD tools

Concourse for VMware Tanzu is a CI/CD tool remastered for teams that practice agile development and need to handle complex delivery permutations. Teams that run Concourse deliver software with high frequency and predictable quality.