What do successful Kubernetes migration projects have in common? A clear strategy, a strong culture, and the proper resources to execute the plan. Check out this expert advice
How to set up a CI/CD pipeline
How can you set up a CI/CD pipeline to speed up software development? Here’s an IT leader’s overview of key principles and concerns, with an eye to teams starting from scratch
3. Choose the right applications for CI/CD – and the right teams
Just as you’ll want to spend adequate time identifying the right tools for your pipeline, you’ll want to ensure you’re moving the right applications through that pipeline. You’re not necessarily going to want to force all of your software products into CI/CD. Korren offered a hint above (i.e., containers) as to the types of applications well-suited for CI/CD.
“A major consideration for modern CI/CD is which applications to include in the process,” Korren notes. “In general, applications that need more post-deployment configuration and have complex internal dependencies on co-location of components will be less suitable for assembly and release through a pipeline. When applications are built with a cloud-native mindset, they will be broken up into small components that operate independently, and can be deployed asynchronously through automation.”
Simplicity can once again guide your early choices; application fit can also be a matter of picking the right service with which to start.
“Beginning with a small project that is relatively isolated is ideal – or perhaps a portion of a project, such as the front end of a line-of-business (LOB) app is considered a safe starting point,” says Tom Iverson, managing principal, cloud and DevOps at RBA. “An internal LOB app allows you to experiment and be more aggressive in your approach for maximum return.”
This approach to application selection can work well in tandem with the aforementioned strategy of starting with CI and then growing into CD later: “Once your CI is well-defined and your code coverage is acceptable, then you can begin experimenting with CD tools and techniques,” Iverson says.
A complex monolithic application might not be a seamless fit for CI/CD; similarly, a monolithic culture or team setup might pose issues as well. Teams with a budding (or maturing) DevOps culture are a good bet.
“When starting out on a CI/CD journey, try to pick a team that is likely to succeed,” Iverson advises. “A high-performing team that is not afraid of change is a good choice.”
4. Double down on testing
If you wanted to distill CI/CD down to key terms, automation would most certainly need to be on your shortlist. Testing should be there, too. It’s a crucial facet of a healthy CI/CD pipeline and is fundamental to shortening feedback loops, improving quality, and achieving the “continuous” in CI/CD without sacrificing quality.
“Organizations must also allow for extra time to write good tests,” Iverson says. “This extra effort will pay off in the long run as your software grows.”
So make sure this is a priority early in your CI/CD efforts. Don’t treat “YAGNI” as an excuse to take shortcuts.
“Do not skimp on testing and telemetry,” Berent-Spillson says. “Automated tests and code-coverage metrics need to be part of your pipeline from the get-go.”
Prioritizing testing will have compounding benefits in terms of continuous – there’s that word again – improvement and optimization. Good tests also help foster buy-in, especially in organizations that might be culturally disinclined to bake too much automation into their software pipeline.
“[Testing and telemetry] create confidence in your new automated process,” Berent-Spillson says. “Anyone who wants to can verify that the pipeline is properly running the checks that used to be done by hand. That’s especially important when the pipeline is new and people are getting used to taking their hands off deployment.”
[ How can containers fit in with CI/CD? Get the whitepaper: Principles of container-based application design. ]