One of the first principles of the Agile Manifesto says to satisfy customers by delivering working software frequently. The problem, however, is that it doesn’t say exactly how we can do that.
“Working software is the only measure of progress, but how to you measure that? You need to integrate and test the software as often as possible and fix errors when and as soon as possible,” said William Holz, senior director analyst at the research firm Gartner.
According to Holz, in order to move faster and be successful in the areas of Agile and DevOps, you need to add Agile technical practices to your software development, such as test-driven development and refactoring. One of the best technical practices out there is to create a continuous integration and continuous delivery (CI/CD) pipeline. According to Gartner, CI and CD are the most widespread Agile practices organizations are currently using or plan to use.
How do you add value to the CI/CD pipeline?
A guide to DevOps CI/CD tools
The ultimate guide to a successful continuous delivery pipelines
Continuous integration is the “automation of the software build and validation process driven in a continuous way by running a configured sequence of operations every time a software change is checked into the source code management repository,” according to Gartner. Dan Packer, industry specialist for the software company Plutora, explained the benefits here are testing, issue resolution, phased changeover, improved team morale, increased velocity, improved quality and improved budget. “With CI, the handoff from one stage to the next is fully automated up to the completion of the testing stage. This is starkly different than that of the waterfall methodology, where the handoff between stages is typically fully manual throughout the entire lifecycle and deals primarily with completed applications vs. small code segments,” Packer wrote in a blog post.
CD is an evolutionary step of CI designed to take automation further, according to Packer. Continuous delivery is the act of releasing reliable software faster through technical delivery and deployment practices like working in small batches and automating repetitive tasks. Benefits include improved velocity, phased progression, always production ready and release control, Packer wrote.
Together, they make up the CI/CD pipeline: A continuous flow of software designed to reduce manual and error-prone work, and result in higher quality software. “This is important because the ninth principle of Agile states attention to technical excellence and design increases your agility. In Agile, rework is waste. The time you spend fixing bugs is time that can be better spent delivering new features and functionality,” said Gartner’s Holz. “You need to be able to do CI and DevOps to achieve continuous delivery. It is no longer about your software. It is about delivering the entire solution.”
According to Holz, this is how you accelerate your Agile and DevOps initiatives successfully, reduce risks and catch bugs. CI/CD enables the ability to build, package, integrate, test and release code with automation.
“Complex operations like CI/CD cannot be accomplished without significant engineering effort. DevOps recognizes the importance of joining tooling and thought throughout the entire process of development and deployment rather than isolating build and production. Rather than having distinct steps when creating a service, DevOps encourages simultaneous development and testing. CI/CD pipelines fit into this perfectly by providing a way to automate the testing portion,” explained Abhinav Asthana, CEO and co-founder of the API development solution provider Postman.
Bringing value stream management into the mix
Once you are delivering working software faster, the next thing to ask yourself is are your processes becoming more efficient? Are you not only working faster, but delivering value?
According to Aaron McCaughan, product owner at the software company Plutora, this is where value stream mapping comes in. Gartner’s William Holz explained a value stream is a collection or series of steps that deliver customer value. For instance, if you buy something on Amazon, the order button is a value stream. You click the button and it goes through a series of steps to get your package to your door. Value stream mapping provides insights into those steps, where the value is, where the value isn’t, and detects areas that can be improved.
“With CI/CD, you might be able to react, you might be able to deliver faster, but you also have to factor in am I delivering value faster?,” McCaughan said. “What am I putting into the pipeline that is satisfying my customer so that I am actually keeping everyone happy and increasing the value of the product?”
Many of the metrics teams are looking at are deployment frequencies, number of check-ins per day, build failure rates, or mean time to recovery. While those are interesting indicators of work, they don’t really measure customer value or help you understand what is flowing through the system, according to Jeffrey Keyes, director of product marketing for Plutora. “The reason people are jumping on the value stream management bandwagon is to answer the question of are we doing better than we did before? Have we improved?” he said. “Value stream mapping and management takes a holistic view of application delivery. You are not trying to fix one point. You are trying to deal with process improvement as a system of pieces and make the most effective switch.”
Value stream management provides a broader view of the entire delivery life cycle long before the software becomes software, McCaughan explained. It goes from ideation to production so you can start tracking your value stream map as soon as you identified your strategic goals for the organization and start identifying bottlenecks. “For instance, if there are three months of planning on average for each change coming through, you can start addressing that,” said McCaughan. “If you are trying to do too much, you are maybe not delivering as fast as you could, whereas if you are focusing on a smaller number of changes or features across your organization, you are more than likely going to be able to deliver them faster. It’s about capturing those dependencies, wait times and overburdens.”
Specific metrics the value stream map brings to light are the average cycle times it takes to deliver a feature, process time, waste time, and actual time spent working on the feature, according to Keyes.
“If you are spending half your time putting out fires, you are not adding value. You are just reacting to production defects or technical debt,” said McCaughan. “You need to identify how much time your delivery teams are spending on just keeping the lights on and fixing defects versus growing your product and expanding and improving the customer experience.”
“Value stream management is the combination of Agile plus DevOps plus the measured outcomes at each phase,” Keyes added.
Bringing the CI/CD pipeline to your mobile initiatives
With mobile becoming more advanced, the services it offers have to be up to par with users’ increasing demands for it to not only work, but work correctly and work fast. The CI/CD pipeline is an important aspect to any successful mobile initiative because it gives teams immediate insight into any changes happening or problems in an application, enables faster turnaround time and deployment, and provides in-depth reports and status on what is going on within the pipeline, according to Steve Orlando, senior director of product marketing for Mobile Labs.
“QA and dev teams need to know what they are testing, and continuous integration makes it possible to always have the latest app build installed by the build system,” added Michael Ryan, CTO of Mobile Labs. “Continuous integration enables continuous testing. Mobility and real devices introduce additional manual steps, such as Google and Apple tools, to install apps on devices for testing. This is both time consuming and is prone to error. Continuous integration saves the manual labor and eliminates errors.”
To successfully implement a CI/CD pipeline into a mobile development strategy, Orlando explained continuous testing becomes an integral part of the pipeline. “Continuous testing requires automated tests,” he said. “These tests can be run on their own, freeing up testers to focus on making sure the app meets business objectives and has a good user experience.”
By including testing in each stage of the pipeline, mobile developers will be able to find and respond to bugs faster and gain in-depth and real-time knowledge on the source of a problem. Each stage of the pipeline includes testing source code to see if it causes conflicts when it is merged, running unit tests as part of the build process, and enabling full automated regression tests, according to Orlando. He also added that testing and the pipeline should be paired with a mobile device cloud so teams can run continuous tests on real devices or simulators.
“Testing the right app version on the right mobile OS and the right device type complicates the matter compared to web testing. CI allows automated installation of the right app on the right device and OS improving engineer efficiency and eliminating errors in the process,” said Ryan.
Why a good API strategy matters
Application programming interfaces (APIs) are increasingly becoming more important to software development as organizations embrace connected services and microservices architectures. “Meaning that APIs are consumed by many different people and are integrated with diverse and complex services,”said Postman CEO and co-founder Abinhav Asthana.
According to Gartner’s William Holz, in order to do effective CI/CD, APIs are important because they create a separation of concerns and enable the ability to test at the unit level, feature level, integration level and performance level. “APIs gives me an idea of where to look for a problem, help me solve that problem sooner, and minimize the amount of waste or rework I need to do,” he said. “I use the example that I can have 100 percent unit test coverage, but I can still break features. I can still break my application because unit tests don’t test the future.”
However, according to Asthana, testing is difficult, and in order for an API strategy to be a powerful tool, dependencies need to be removed. “With connected services, dependencies are a huge concern. If a team updates an API, it could potentially break an API consumer’s service, but a CI/CD pipeline can solve this problem,” Asthana said. “CI/CD pipelines ensure that connected services are healthy by consistently checking for broken dependencies with full system tests at every build. This means that broken dependencies are most often caught in development rather than in production. The later a bug is caught, the more expensive and time-consuming it becomes to fix it.”
Once a CI/CD pipeline is set up, developers can run integration tests as part of their build. According to Asthana, those tests stay with the developer until they pass, which means the production environment remains safe from harm. “A good CI/CD pipeline will have reporting built in, so testers can review their automatically run test results and determine the source of not just errors in their code, but errors in interaction with dependencies,” Asthana said.
Asthana adds that teams should also find a tool or framework that can write tests and maintain a test library for the pipeline. This will ensure a good set of tests that can be used and reused. Tools should also provide the ability to test against live environments, services and data, and have a system of reporting implemented so developers and tests can get access to insights quickly, according to Asthana.
“Implementation of CI/CD greatly simplifies API management. The consistency and reliability of a CI/CD pipeline mean that developers aren’t bothered with manually managing dependencies between versions. Instead of putting out fires, developers can spend their time improving products. CI/CD pipelines catch errors early on, which saves time and money,” he said.