Continuous delivery, continuous integration, and continuous deployment are three DevOps strategies, each with their own clearly-defined scope in an automated development process. The goal is to build, test, deploy, and release software updates to the public as quickly as possible, with few bugs.
Visualize the development process in 4 steps:
- A work task (new feature or bug fix) is defined and assigned to a developer. He or she loads a copy of the code from the mainline onto their local machine and completes the task, then manually commits the code to check in. A continuous integration server (on-premise or cloud-based service) is triggered to run the local build against the mainline working copy and test the update.
- When new code gets the green light, it is merged with the mainline build and automated tests—unit tests, A/B tests, etc.—run again, in case other changes were made to the working copy. This build process happens multiple times a day, with developers updating the main repository at least once a day.
- Software updates are always ready for release—after completion of a successful build—from staging to production.
- Approved code is automatically pushed to production and released in small increments to end users, without manual intervention or delay.
Continuous Integration vs. Continuous Delivery
Continuous integration (CI) involves using a CI server to automate the build process, run tests on every branch commit, and integrate new code with the mainline code base. The goal of CI is to catch integration bugs as early as possible. It prevents the dreaded ‘integration hell’ that occurs when multiple developers attempt to merge code at the same time using files from the same build.
With CI, every commit is automatically tested and integrated—after passing the required suite of tests—into the most recent version of the working copy.
Key components of CI include:
- A CI server (on-premise or cloud-based service) is in place.
- Automated tests are written for each task.
- CI is run on every commit.
- Conflicts are identified and dealt with as soon as they arise.
- Code changes are merged to a central repository (mainline) several times per day.
Continuous delivery (CD) emerged in 2010. It is the practice of automating the development process from build to production in incremental steps. While CI automates the build process only, CD automates the development cycle from build to staging to production. It is an extension of Agile methodologies, introduced in 2001, where production and testing environments are integrated with development and all DevOps team members work as a unified team.
Key components of continuous delivery include:
- Accelerated release cycles.
- CI is being implemented successfully.
- After a manual commit, deployment is automated through the continuous delivery pipeline without the need for manual intervention.
- Applications can be deployed to production at any time.
- One-click production can be done manually when a business decision dictates it.
Continuous Delivery vs. Continuous Deployment
Continuous deployment is automating the last step of production, i.e. the release. In a continuous delivery environment, the release is a manual step that can be completed at any time; with continuous deployment, this step happens automatically with every piece of code that passes through testing to production. Continuous deployment may not be the right fit for every business, but it can greatly simplify releases for DevOps teams that take full advantage.
Key components of continuous deployment are:
- Each addition to the mainline is automatically deployed to customers.
- No human intervention is involved.
- If a test failure occurs in the production pipeline, team members are notified.
A key consideration in both continuous delivery and continuous deployment is the quality of the test suite. High-quality tests (unit, integration, application, and UI) give DevOps teams more confidence in the final product and results in fewer bugs released to consumers.
Software development today progresses at lightspeed—or very close to it. Rapid, constant change is the new standard. To keep pace with the competition, IT architecture has to be flexible with the ability to respond and adapt to increased complexity quickly.
Continuous Intelligence is a Sumo Logic concept that helps DevOps teams maximize innovation. The three pillars of continuous intelligence are:
- An agile technology infrastructure that uses cloud-based services.
- The culture, operational, and development processes of continuous integration and continuous delivery.
- A solution that delivers continuous intelligence through real-time insights into usage, security and user behavior.
Continuous intelligence through Sumo Logic is a secure, always-on framework that helps DevOps teams get the information they need to get up-to-speed quickly on CI and CD. Continuous intelligence involves using machine learning to deliver advanced analytics across the entire application stack.
The Value of CI, CI, CD, and CD
DevOps and IT services offered in the cloud are in a constant state of evolution. What works best for one business may not be necessary or possible for another. However, the sooner DevOps teams adopt the core concepts of continuous delivery, integration, and deployment, the better positioned they will be to adapt to the ‘next big thing’ in software development.
To learn more about improving visibility at every stage of the development process, download the From Code to Continuous Delivery solution brief.