Learn About Continuous Integration, Deployment, and Delivery
After completing this unit, you’ll be able to:
- Explain and compare continuous integration, deployment, and delivery.
- Name some of the benefits of continuous delivery.
To complete this module you need:
- A free Heroku account
- A free GitHub account
If you haven’t taken the Heroku Enterprise Basics module, we highly recommend completing it before you start this module.
Modern development practices enable teams to build and deploy the most sophisticated, engaging apps on the market. These practices include continuous integration, deployment, and delivery, which allow for short release cycles, automation, and a direct connection to the source code repository. These practices are designed to enable teams to push incremental code updates to production quickly and safely. If these methods are used correctly, bugs and issues show up earlier in the app lifecycle, which results in faster, higher-quality product releases.
Let’s talk more about continuous integration, continuous delivery, and continuous deployment. Although they sound similar, pay close attention to the differences between each process.
Using continuous integration, a product is built to include and integrate every code change on every commit (continuously), by any and all developers. An automated build then verifies each check-in, letting teams detect problems early.
In complex products, changes that seem simple and self-contained can produce unintended consequences. If multiple developers are working in parallel on multiple, isolated code branches, merging changes to a common master branch can have unpredictable results. Unpredictable results often lead to multiple rounds of regression testing and bug fixes. Continuous integration (CI) is a component of the continuous delivery process that enables developers to integrate their updates into the master branch on a regular basis. With CI, automated tests run before and after each change is merged, validating that no bugs have been introduced.
Continuous delivery ensures that code can be rapidly and safely deployed to production by manually pushing every change to a production-like environment. Since every change is automatically delivered to a staging environment, you can deploy the application to production with a push of a button when the time is right.
The additional step of pushing the code to a staging environment is what makes continuous integration different than continuous delivery. Having a green (successful) build with CI doesn't mean your code is production ready until you push it to a staging environment that matches the final production environment.
Continuous deployment is the next step of continuous delivery. Using Continuous Deployment, every change that passes the automated tests is deployed to production automatically. Most companies that aren’t bound by regulatory or other constraints should have a goal of continuous deployment.
While not every company can implement continuous deployment, most companies can implement continuous delivery. Continuous delivery gives you the confidence that your changes are serving value to your customers when you release your product, and that you can actually push that button anytime the business is ready for it.