Preparing for an RPA job interview, as a candidate or hiring manager? Check out these RPA-related questions and guidance on developing strong answers.
Getting started with CI/CD: 6 pitfalls to avoid
What are the common mistakes people make when starting out with CI/CD to speed software development? IT leaders and experts share advice
4. Don't treat automation as an infallible hero
Automation is intrinsic to CI/CD; a CI/CD pipeline laden with cumbersome manual processes isn’t much of a CI/CD pipeline.
“CI/CD is all about automation,” says Meera Rao, senior principal consultant at Synopsys Software Integrity Group.
That doesn’t mean “automate all the things” is literally the goal, though. Rao notes that while automated testing is an enormous part of CI/CD, it doesn’t actually eliminate the need for manual testing or other forms of human intervention.
“No single automated testing tool can find all the defects in an application. For example, static analysis tools cannot understand business logic,” Rao says. “Likewise, no automated security tool is effective in discovering architecture and design flaws in deployed applications. The only effective way for an organization to discover these types of flaws is to perform a manual architecture risk analysis.”
It’s a later-stage byproduct of Berent-Spillson’s tool salad: Assuming your technology will take care of everything almost certainly means there will be issues in your pipeline and, as a result, in your production code.
“On top of automation and continuous testing, you must make sure to have intelligence built within your CI/CD or DevOps pipeline to know when human intervention is required,” Rao says. “Recognize that tools need hand-holding.”
5. Don't shortchange your CI environment
A truly robust CI/CD pipeline is the sum of its parts; if you skimp on the integration piece, that can have compounding effects later, especially when code deploys to production.
“Ideally, the continuous integration environment for a software product mimics the production environment as closely as possible,” Bloch says. “Continuous integration will not prevent end users from encountering bugs if the software was not able to be tested under realistic conditions.”
Bloch shares a handful of examples where discrepancies might occur between integration and production environments, increasing the likelihood of missed issues.
- The allocation of process resources such as CPU and RAM.
- The number of distributed servers running a web application.
- The scale of web traffic encountered during testing.
- When applied to mobile apps, Bloch says making your CI environment as production-like as possible “means that the most accurate environment for testing and continuous feedback is a physical device and not an emulator.”
6. Don't silo development and testing
Just as DevOps success required the breakdown of traditional walls between development and operations, CI/CD success depends upon bringing dev and testing into closer alignment.
“Watch out for persisting the separation between development and testing, even after automating the integration of code and the delivery of the latest version,” Bloch says. “If development reaches a checkpoint where a CI build occurs, the developers are not separate from the next steps in the process. If bugs are identified, developers must respond quickly and provide the fix into the CI process, or else the build may not be considered releasable.”
You don’t need to start doing trust falls with your developers and testing pros; rather, you need to start eliminating conflicting goals and incentives.
“The ability to deliver continuously is jeopardized if development and testing activities do not share priorities,” Bloch says.
[ How can containers help with CI/CD? Get the whitepaper: Principles of container-based application design. ]