In the first article, we talked about CI or Continuous Integration. This post looks at the second half of the CI/CD acronym, Continuous Delivery. Continuous delivery takes the build originating in the CI process and puts it into an acceptance environment for further evaluation before promoting the code to production (the released version).
To back up a moment, CI is the planning, coding, testing, and building of software in a rapidly repeating process. Automatic systems compile and test an application as the software developers check code into a version control system. The resulting code from each iteration feeds the CD process. The CD process completes the pipeline for the development, delivery, and maintenance of software.
What is continuous delivery?
The product of CI is a new stabilized version of an application with new functionality and bug fixes. After the testing phase in the CI process, the CD side of the acronym takes over. In the CD process, the software moves from development’s environment over to one or more testing environments for further evaluation. The development and operations team (DevOps) along with other stakeholders decide when and if a version deploys to production. An automated process handles the deployment once initiated.
Like the CI phase, the CD phase also consists of four parts: release, deploy, operate, and monitor. However, the cycle may repeat multiple times deploying to different environments for various tests before the final release to production.
Although some processes may deploy straight to production, most deploy software to a copy of the production environment often referred to as acceptance or staging. Automated tests and monitoring continue in the acceptance environment as the different stakeholders evaluate the new features. The diagram below shows the CD side of the CI/CD process on the right.
- Development releases the build to the CD process.
- Operations deploy the application in either the production or acceptance environment.
- Stakeholders use or operate the application.
- Automated systems monitor for availability, performance, and function.
- User feedback and testing results go back into the CI planning phase.
The difference between acceptance and production
Production is the live active version of an API, web application, or website. Any bugs in the software or weakness in the infrastructure directly affect the product’s end-user. Although some processes deliver directly to production, others go through further scrutinization before general release.
The acceptance environment allows stakeholders to view, use, and evaluate the latest version before the application moves to production. Several different tasks may take place in acceptance before the operations team releases a version to production.
- Usability testing. The user experience team works with real users to make sure the application is easy to use, and users can complete tasks.
- Load testing. What happens when multiple users (thousands perhaps) use the application at one time? Can the software and hardware hold up under the stress?
- Soak testing. How well does a system stand up to stress over extended periods?
- Stakeholder evaluation. The stakeholders give their opinions on whether the version is acceptable and ready for deployment to production. The stakeholders may be management, other departments like quality assurance and user experience, or users that have agreed to provide feedback.
Why use continuous delivery?
Continuous Integration and continuous delivery help development and operations teams get new software and functionality to the user faster with fewer bugs. Other advantages of continuous delivery include
- Less risk. Small changes mean less can go wrong, and when they do, the process makes it fast and easy to fix or back out changes.
- Faster feedback loop. Direct channels of communication from operations and stakeholders allow development to respond quickly to feedback.
- Improved market response time. Respond to changing consumer demand, such as product focus or shifts in devices used to access your product.
- Reduction in bottlenecks. With smaller, more frequent updates, you eliminate bottlenecks caused by the delivery of extensive changes. For example, it takes quality assurance much less time to process a release with 12 changes versus the hundreds or thousands of changes caused by longer development sprints.
What’s the difference between continuous delivery and continuous deployment?
Both continuous delivery and continuous deployment follow the CI phase of the development process; however, continuous deployment is completely automated. With continuous deployment, the deployment to production is automatic if the version can pass the automated tests.
On the other hand, continuous delivery relies on the development and operations teams to decide when to release the software. When the teams decide, they trigger the automated process that deploys the application to production.
Focus on Automation
Just like CI, CD relies heavily on automated processes. Automated processes import software, update infrastructure, update data, conducts tests such as smoke tests, load tests, and soak tests. With continuous delivery, deployment to production is always just a few clicks away. In production, automated processes continuously monitor and gather availability, performance, and function data.
Uptrends and your acceptance environment
Your acceptance environment should mirror your production environment, and your Uptrends monitoring is part of that. You can have all of your monitoring set up as an integral part of your CD automation and testing. If your acceptance environment is directly accessible from the web (with or without authentication), Uptrends’ vast network of over 200 checkpoint locations can access and test your APIs or websites for availability, performance, and function. If not, you can also consider Private Checkpoints that reside on your network so that you can use Uptrends full suite of monitoring products behind your firewall. Learn more in the next article.
Next up: Uptrends and your CI/CD processes