Experience the benefit of deployment automation
CI/CD has become an integral component of modern agile development. Continuous integration (CI) orchestrates multiple submissions of working code from one or more teams. Continuous delivery (CD) is an expansion of CI that automatically collates, packages, and deploys changes into testing and production environments for imminent release to customers. Continuous deployment (also CD) is an extension of a product pipeline where each quality-verified change automatically moves to the operational environment without any human intervention, offering the highest degree of automation. Only the occurrence of a test failure stops a change from reaching production.
Continuous deployment offers incredible productivity benefits for modern software businesses. It allows enterprises to respond to changing market demands and teams to rapidly deploy and validate new ideas and features. With a continuous deployment pipeline in place, teams can react to customer feedback in real-time.
Though the technologies and toolsets vary widely, the objectives of a solid CI/CD pipeline are the same for all teams.
Increase efficiency. Minimize the time necessary to establish development environments.
Release automatically. Avoid blockages, delays, and errors by eliminating human intervention.
Deploy code fast. Get the code changes into production sooner. Steadily remove all bottlenecks from each stage in the pipeline.
Reduce cost. Eliminate the cost of idle environments.
Improve quality. Run automatic regression and parallel tests to improve test coverage, ensure your application is bug-free, and function in more environments.
Mitigate risk. Minimize development and testing volatility for the development team, QA, and users. Extending value-additive automation enhancements across the pipeline leads directly to early defect resolution and decreases downstream bugs.
Embrace iteration and information sharing. Encourage the team to submit frequent feedback that serves to iteratively improve and enhance the product.
Sometimes Agile isn't enough
At Devbridge, we implement Agile best practices for all the products we build, deploying working code to production after each sprint. Each deployment in our CI/CD pipeline requires a minimum number of activities, such as:
construct a release candidate
manual regression testing
user-acceptance testing (UAT) in a staging environment
performance testing
deploying to production during off-peak operational hours
When orchestrating the work on some of our products, we knew that we were getting substantial value from our build pipeline. However, there were cases in which we observed significant overhead.
Consider a squad (team of teams) with a cadence of delivering releases every two weeks. Using this example, the squad needs to plan and execute roughly 25 releases per year and possibly more to accommodate hotfix releases. Orchestrating many successive releases that contain contributions from various teams requires sustainable collaboration and substantial effort.
Addressing overhead problems threatens to disrupt the extensive work cascading across multiple teams. It will be necessary to reconfigure the pipeline if any serious errors arise. Expectations will go unmet, and some plans won't materialize, which introduces adverse pressure onto a complex and effort-intensive workload. Morale likely decreases, with team members becoming weary.
When seeking to implement best practices, many teams realize that Agile only goes part of the way. The need for more consistency, reliability, and higher velocity requires more automation, only achievable by implementing continuous delivery. Working towards higher levels of product release maturity, these teams pursue improvements to their conventional CI/CD pipeline, seeking to eliminate administrative overhead and manual interventions.
The rewards of automation efforts are clear.
REWARD | EFFORT |
---|---|
A complete pipeline automation | Strive for full automation to incrementally minimize the impact of human errors that commonly arise in manual regression testing and deployment. |
Effective, abundant pipeline checkpoints | To increase responsiveness and speed resolutions, establish verification checkpoints all along the pipeline, especially in production. Alerts should be automatically sent from any checkpoint at which a failure occurs. |
Integral security and performance testing | Implement and automate testing along the entire CI/CD pipeline to enhance quality and minimize the accumulation of technical debt. |
Exhaustive monitoring of the production environment | Comprehensively monitor staging and production environments to catch defects that slip downstream. Also, automate hotfix release workflows that can quickly restore production as necessary. |
This white paper covers the recommended steps toward an automatic, effective, high-momentum development pipeline. We’ll outline the process and configuration improvements in detail that the Devbridge team is taking to advance from continuous delivery to continuous deployment. The goals that we’ve defined point us toward a bright future in which we continually refine our pipelines to the point of complete automation. With these refinements underway, we are already shipping products to market faster and better.