Release and deployment management is the system you use to plan, schedule, and control all components of a software product launch. It’s your team’s game plan for mitigating risk, meeting deadlines, and delivering amazing digital experiences.
In the past, software teams engaged in risky, all-or-nothing releases—you’d go live and hope for the best. But as you’ll see in this article, not every release has to be a major release. With the right tools and proper planning, you can perform frequent minor releases, proactively test features in production, and collect user feedback before a release.
In this article, we’ll explore best practices for safely speeding up your software release cycle without sacrificing quality. But first, let’s get grounded in the basics.
An overview of the release and deployment management process
Traditionally, the processes of deploying code and releasing features have been entwined. In other words, the first time you test a feature is the same day as the marketing launch for the release of that feature. Without the ability to test features in a live production environment, software teams are slower and more risk-prone.
A faster—and ultimately safer—way to deliver software is by testing small changes with real users before rolling a feature out to your entire user base. The most efficient way to do this is with feature flags, which let you enable or disable functionality without deploying code. Once a feature is pushed to production, your development team can make it visible to a small group of users, then scale up as needed.
Now that we know deployment and release can be decoupled with feature flags, let’s cover the four phases of going live with new software.
Phase 1: Define your acceptance criteria
Let’s say you’re planning to release a one-click checkout feature within an existing software product. In the release planning stage, you’ll want to set specific, testable standards to make sure the feature meets users’ expectations. Acceptance criteria are typically established by a release manager.
For example, you’d want the new functionality to work on both desktop browsers and mobile devices.
Phase 2: Test small batches of code in production
Testing features in pre-production environments (e.g., staging) is becoming less necessary in many cases. A more reliable test plan, one that is ultimately less risky, is to test new features on a small group of real users in a production environment prior to a full release (test in production). This is called dark launching, which is virtually the same as canary testing.
If you dark launched the one-click checkout feature using feature flags, you would enable it for 1% of your end-users, then 5%, and 10%. If sales increase, you can gradually roll out the feature to more users. However, if sales decline or customers aren’t responding well, you can simply switch the feature OFF. This leads to the next step: refinement.
Phase 3: Refine the new feature as needed
As you expose more users to your new feature and gather performance data, you’ll get a better sense of the changes you need to make. A key benefit of decoupling release from deployment is that you significantly reduce the impact of application failures. Addressing a bug that affects 5% of your users is far less problematic than addressing a bug that affects everyone at once.
Phase 4: Release the new feature to all users
Once you’ve collected feedback and approved changes for the new release, you’re ready for a full release. You’ll want to monitor the performance of your application as you move to general availability (GA) using an observability or application performance management (APM) solution.
ITIL release management vs. DevOps release management: What’s the difference?
ITIL (IT Infrastructure Library) is a set of IT service management (ITSM) best practices, including release management, project management, and change management processes. For some enterprises, the ITIL process is essential for regulatory compliance, especially in heavily regulated industries. But the main drawback of ITIL is that it puts teams into silos, which can lead to a ‘not my problem’ attitude when obstacles arise during the release process.
The DevOps framework encourages tight alignment between developers and operations engineers, thus breaking down barriers that stand in the way of continuous integration and continuous delivery (CI/CD). A main goal of DevOps release management is to shorten feedback loops, which ultimately leads to faster, scalable releases. In this article, we’re promoting software deployment and release management best practices that free teams from drawn-out Waterfall releases and enable them to move closer to Agile, DevOps, and CI/CD.
5 tips to optimize your release management process
Software delivery can involve a great deal of complexity. There isn’t a cookie-cutter approach when it comes to your release management process. But there are some foundational principles that every team can benefit from.
1. Establish KPIs to keep your team motivated and on track
Standardize success with key performance indicators (KPIs) that can be easily and objectively measured. Examples of KPIs might include a specific error rate or a number of downloads. For developers, seeing your new features driving measurable results for the business can boost morale.
2. Standardize your release process
Delivering software safely and quickly starts with a consistent release process. Rather than creating workflows from scratch, save time and free up your team to focus on high-level work with LaunchDarkly’s Feature Workflows.
Feature Workflows lets you create a custom, standardized release workflow template with schedules, approvals, and flag triggers (automated kill switches). You can then save and share that template across your entire organization, ensuring release activities stay consistent across all your teams.
3. Reduce risk with feature flags
When you roll out new software to a massive user base all at once, you run the risk of causing a major outage or some other service disruption. On the other hand, dark launching with feature flags lets you test new features on a small percentage of your users instead of 100%.
By gradually exposing users to new functionality, you not only glean better insights earlier, you minimize the blast radius of bugs, glitches, and errors.
4. Use automation to your advantage
Automation isn’t about taking humans out of the decision-making loop. On the contrary, automation takes tedious tasks off your team’s plate so they can focus on more valuable work.
LaunchDarkly’s Feature Workflows was built to automate complex, multi-step software releases for teams of any size. Here are a few key features:
- Flag Triggers: LaunchDarkly syncs with your observability and application performance monitoring (APM) tools. When your APM tool detects a critical issue with your performance metrics (like a surge in error rates) during a feature rollout, it will automatically turn the flag associated with the new feature OFF. What’s more, the toggling of the feature flag can trigger an alert in your team’s chat tool (Slack, Microsoft Teams, etc.), so key stakeholders get updates about the situation in real-time.
- "Set and Forget" Releases: Schedule future releases for a specified date or time. No more setting reminders or waking up early to turn on a feature flag.
- Progressive Rollouts: Define the release cadence that suits your team’s needs, then sit back and relax. For example, you can schedule your flag to automatically release to 20% of users tomorrow, 35% the day after, and increase gradually to 100%.
5. Track user engagement metrics early and often
Analytics are the driving force behind software success. You can’t improve what you don’t measure. With LaunchDarkly, you get a ‘play-by-play’ look at how a feature is performing using Flag Insights. For example, you can set goals and compare conversion rates before and after you turn on a feature flag. You can then export that flag data to your analytics tool of choice via LaunchDarkly’s Data Export Add-on. You can also leverage LaunchDarkly’s Experimentation Add-on to run experiments throughout the release process. You can collect and export user engagement data and deploy the winning variations of an experiment with LaunchDarkly immediately.
Deploy when you want, release when you’re ready
With the rise of CI/CD, software teams can’t afford to wait weeks (or months) to deploy code to production. Despite lengthy pre-production testing, developers often fail to prevent issues when deploying a feature into a live environment.
DevOps teams thrive when they’re empowered to run experiments without the fear of breaking anything. That’s why feature flags are such a game-changer: developers can deploy to production whenever they want, and the business can release when it’s ready.
Think of feature flags as a safety net for continuously delivering software. If a feature throws a bug in production, you can disable it with one click without redeploying your entire application. This control empowers teams to continuously ship features (even incomplete ones) without the fear of disaster.
Ben Nadel, a founder at InVision (a LaunchDarkly customer), describes this confidence as "intoxicating.”
A robust software deployment and release plan is crucial for CI/CD, but you can only go as far as your tools take you. LaunchDarkly’s feature management platform enables teams to take total control of code, so they can ship fast and rest easy.