As cloud-native architecture continues to rise, the adoption of microservices, although advantageous, can easily disrupt your continuous integration/continuous delivery (CI/CD) pipeline. It’s more important than ever to stay on top of the critical success factors for software delivery. Each time a DevOps journey introduces advancements and practices, there is a new challenge to harden the software delivery process.
[ Need to explain key DevOps terms to others? Get our cheat sheet: DevOps Glossary. ]
As new patterns and practices emerge, IT teams must rethink critical elements for success. The CI/CD pipeline starts with continuous integration. Looking toward the future of software delivery, I reached out to DevOps Institute Ambassadors to determine key success factors for continuous integration. Here’s what they said:
“The foundation of CI is version/source control. Next, teams need to practice trunk-based development where no feature branch lasts longer than a day. They’ll also need a tool to automate builds and trigger automated tests (unit, integration, and user acceptance) every time a developer commits code to trunk.” -Helen Beal, chief ambassador, DevOps Institute
"The attributes of a successful CI process include managing a clean code repository with an agreed-upon branching and merging strategy, a clear understanding of build dependencies, a solid build script, and an agreement that all code (including external libs) be versioned. Your CI process should also include a method of versioning and storing your new release candidates with a difference report that shows what has changed. Further, your CI build should include static code analysis, the generation of a software bill of material (SBOM), and a common vulnerabilities and exposures (CVE) report to complete the picture.
As we move away from monolithic software development, continuous integration will shift. Instead of compiling and linking a full set of binaries, we will be creating independent microservices. A microservice build is simply an image build and a container registry. Your microservice container build will still need code managed in a repository, and steps that include code scanning, SBOMs, and CVEs. Branching and merging will become less important. Instead, methods of managing container versions and methods of creating ‘logical’ application versions based on a service’s impact will be the new CI focus." -Tracy Ragan, CEO and co-founder, DeployHub
"As a first step, we need to streamline our source code control management processes. Then to realize the success factors, we need to do the following:
- Define and implement a continuous integration methodology
- Ensure that everyone commits to the baseline every day and automated build creation process
- Run tests automatically on every push to the main repository
- Fix the build as soon as it’s broken
- Write tests for every new story that you implement"
-Parveen Arora, founder and director, VVnT SeQuor
“At a minimum, successful continuous integration systems need automated capabilities for source code version management, code change request input checking, merging, source code scanning for quality and security, incremental and full builds, unit testing, dynamic scanning for quality and security, creation of containers, containers scanning, functional testing to verify the new build is sufficient quality to be considered a release candidate, and the validated release candidate needs to be digitally signed and versioned in an artifact repository, in preparation for subsequent continuous delivery processes. A dashboard and alerts are needed to keep all stakeholders informed about the progress of the continuous integration processes. The entire continuous integration system needs to be reliable and fault-tolerant because many stakeholders depend on it.” -Marc Hornbeek, CEO and principal consultant, Engineering DevOps Consulting
"Success with continuous integration starts with the source software, which is going to be the source code management and how the peer review is done. Once the code compilation is completed, you need to have unit tests set up to make sure nothing gets broken from the code side. You also need to have some good style checkers, code metrics, and the creation of container images. These are some of the best practices that you need to follow in terms of continuous integration so once the code is moved to the testing phase, you have a good framework.
DevOps teams will need a good framework around the integration testing of the load or UI testing, or the penetration testing, which will enable the application teams to create continuous delivery and also enable continuous deployment." -Vishnu Vasudevan, head of product, Opsera
The ambassadors made it clear – automation, a clean code repository, and streamlining of source code are highly critical elements of success when it comes to the continuous integration strategy. If you’d like to take a deeper dive into continuous integration, register for DevOps Institute’s SKILup Day: CI/CD on April 21.