When CI Meets CD: Deliver With Confidence
According to DORA’s State of DevOps 2019 report, elite performing software teams deploy on-demand with multiple code deployments to production per day. Consistent with the findings of 2018, the overall portion of elite groups to high, medium and low performers almost tripled in 2019. These findings show that delivery excellence is essential for all businesses and can be attained with the right execution, technology and culture.
This article will share how teams can improve their DevOps capabilities by understanding potential delivery bottlenecks, and how continuous integration/continuous delivery (CI/CD) platforms are changing to encourage faster, better and safer software delivery.
Continuous Integration As the Bottleneck
The goal of Continuous Integration (CI) is to produce a packaged artifact ready to deploy onto a server or machine. An artifact can be a container image, WAR/JAR file or any other executable packaged code. CI automates the process from code commit to packaged artifact, meaning deployment frequency depends on how early, fast and often developers are iterating toward the next release candidate artifact.
So, where are the challenges with continuous integration?
Testing remains one of the most time-consuming processes within a CI/CD pipeline. Tests can take several hours to complete, disrupting the flow of development and delivery.
According to the Harness Continuous Delivery Insights 2020 report, the median testing time for a CI/CD pipeline is four hours. For many organizations, the key challenge was reaching an acceptable level of test coverage, automation and maintenance on the suite of tests.
Often, the most common action to take toward acceleration is to introduce automated testing. However, this scales only as far as the performance of our CI servers and tests.
Test-driven intelligence is the next modern software delivery capability to scale the build and test stages of the CI pipeline. CI has always been about integrating new development changes into the existing code base in an efficient manner. This means that developers need to leverage their tests and their code each time they start or trigger the CI process. The code and tests, therefore, serve as inputs to artificial intelligence (AI) and machine learning (ML) test intelligence. Using this data, software delivery platforms like Harness can determine which tests to run based on several derived outputs, such as code changes and test additions or modifications.
Maintenance and Configuration
Many systems today are moving toward low-code or no-code capabilities to achieve cross-functional and first-class delivery. There are three kinds of considerations to make, related to bottlenecks in the maintenance and configuration of CI servers:
- Scripting or significant configuration requirements: These requirements need professional developers to work within CI platform constraints. CI platforms and solutions that don’t require code are often more flexible and durable in service-oriented architectures, whereas scripting can slow or break down delivery processes.
- Service instability issues: Self-hosted or hand-rolled solutions may not have this level of support.
- Scaling toward CI/CD: Lacking a first-class integration between CI and CD, leading to more scripting.
The Developer Experience
CI is about improving the development workflow. However, CI can quickly turn into an anti-process. This is when developers have to maintain and troubleshoot build failures due to their CI servers, spend time navigating and understanding user interfaces, or wait for slow or paused builds to complete.
Today, unified platforms offer developers faster and better ways to get from code to testable artifacts. CI server functionality through APIs provides new ways to integrate with IDEs, allowing developers to define their pipelines as code and to trigger their CI/CD process, all within their developer environment. Consider new ways of improving your developer experience through the unification of tools.
Experimentation in Real Time
Change is the reality for organizations whose competitive environments demand customer satisfaction and consistent revenue through software services. These organizations need the ability to quickly embrace customer feedback during the product development lifecycle. A common tool for developers to facilitate a competitive product advantage is to use feature flags. Here are some common use cases for feature flags:
- Risk mitigation: Progressive delivery mitigates the risk of deployment. Feature flags can be a part of your IT governance strategy, giving teams the ability to control the visibility of features through a managed entity. You get to ship only when you’re ready.
- Testing in production: Use feature flags to set custom rules on who has control access over new features.
- User feedback: Social platforms and retailers were among the first to embrace A/B testing to understand consumer behavior, to optimize engagement and purchases. Feature flags offered a new way to develop and test new features in production with a subset of users.
- Change in real time: Feature flags can hide code or behaviors without having to redeploy new versions of the application.
Experimentation in real time is about having the data and feedback to make delivery decisions. Feature flags can help developers reduce the feedback loop on long-running feature development.
On the Road to Deliver: The Costs of Acceleration
With CI/CD, teams can easily go from one or two deployments a month to 30 a month. This speed can bring success and celebration, and provide a focal point around DevOps culture and building elite performing teams. Psychological safety is important. Every team needs the autonomy and ability to solve potential pitfalls or problems in the software delivery process.
However, the nature of cloud computing is that cost is often a function of a team’s deployment frequency. When it comes to the cost of business, six- or seven-figure cloud bills can often become an area of toil and shame. Bringing teams to the same level of visibility and understanding can promote a no-shame culture.
One challenge to overcome is how to glean insights into cloud costs. Many platforms today like Kubecost, Cloudability or Cloud Cost Management by Harness can provide capabilities for right-sizing workloads, budgeting and alerting teams of their cloud resource patterns and usage.
Unification: The Truth About Elite Performance
The truth about elite DevOps performance is that any team can succeed with the right processes and technologies. This post shares some considerations to improve your DevOps performance. The unification of tools and workflows allows developers to manage all aspects of software delivery — through CI, CD, verification, feature flags, and cloud cost management — to achieve a simple, smart and scalable model for delivery.