Engineering Improvement Runbook | Continuous Deployment
Patrick Leal
August 11th, 2020
Continuous Deployment vs. Continuous Delivery: What is the difference?
Being in the DevOps space, we're often asked questions about software deployment like, "What's the difference between continuous delivery and deployment?", "What is continuous deployment?", and "Are continuous deployment and continuous delivery the same thing?"
So first, let's start by clearly defining these terms.
Continuous Deployment vs Continuous Delivery
Continuous deployment is an agile methodology for software development whereby any code commits are given automated tests and deployed to production where they are immediately visible to end-users.
Conversely, continuous delivery involves the release of new code to quality assurance for testing on a rapid, continuous basis.
Typically, continuous delivery incorporates staging and is not an instant-release environment like continuous deployment. This is because there is a break in the release process between when code is being reviewed, changes are accepted, and new features are released. Whereas continuous deployment does not require a staging area, eliminates human intervention and manual steps to review, and integrates automated testing throughout all phases of production.
Which is Better?
Continuous delivery and continuous deployment are two sides of the same coin in continuous software development. With a focus on agile methodologies, each of these strategies seeks to expedite and add efficiency to the development, building, and testing of new code. Sleuth supports both styles but we think that continuous delivery is where most teams land who have many environments including staging, canary, and sometimes alternate production environments.
Both methods will allow you to be agile. In fact, we’ve often seen only a 1 - 2 minute lag between staging and production deployments. However, it's having that safety net in place that we think makes continuous delivery the more popular option.
When Should You Not Utilize Continuous Deployment?
Given the reality of the automated process, there are a couple of instances in which it is not appropriate to utilize continuous deployment. For instance, some organizations have compliance regulations that restrict their ability to implement continuous deployment strategies.
Additionally, if your development teams or processes aren't mature yet, it may not be the best time to attempt continuous deployment. This is because of the lack of staging environments during the development process and the reduction of feedback during software releases.
The scenario that we’ve found most common is that teams who choose continuous deployment are often not burdened by SOC2 and compliance issues, or they have an incredibly mature testing and canary setup that always catches bad code before it ships.
Ensure Success with Sleuth Deployment Tracking
If you do choose to incorporate continuous deployment pipelines into your DevOps practices, you must have the right toolset in your arsenal due to the greater need for testing through all phases of production to ensure bad code is not executed. Deployment tracking enables you to report any changes in application or infrastructure performance caused by the new code. The following are several benefits that Sleuth’s deployment tracking software offers:
Impact Tracking
With impact tracking, your tool can use your key SLIs to let you know if your deploys are getting the job done or causing new problems. When a developer knows their change caused negative impact minutes after a deploy they can immediately take corrective action. Moments after a change has been made, the developer responsible has context and if their change had any negative side effects, they can remediate those quickly so end users aren’t negatively affected. Sleuth offers impact tracking that allows you to connect to many of the tools you already use, such as Datadog, Sentry, Honeybadger, SignalFx, and Rollbar, to determine the health of your continuous delivery pipeline.
Feature Flags
Sleuth also integrates with LaunchDarkly to give developers fine-grained control over which users see which features, and you can now track the status and impact of feature flags relative to other source changes in your projects, such as code, issues, etc.
Slack Integration
And to ensure your team stays informed, Sleuth offers a robust Slack integration that keeps your teams updated on how your deploys are impacting your code over time and closes the feedback loop.
If there are any issues, teams are instantly notified via Slack. And instead of cryptic messages, the Slack notifications Sleuth delivers gives everyone the information they need to address the issue. With the click of a button right in your Slack notification, you can go directly to the PR or commit in your code repository, email the author, lock or unlock the deployment, or view the deploy in Sleuth. All within a unified Slack notification.
Environment Support
Sleuth's first-class environment support helps you understand how your deployments are impacting your environments and whether there is a drift or lag between your team's environments.
If you'd like to learn more about how Sleuth can help you ship code twice as fast, whether you are adopting continuous deployment or otherwise, see our live demo or try Sleuth free for 30 days.