Achieving continuous delivery is a game changer for any organization, but doing so with low risk requires more than just deploying frequently—it demands a systematic approach to release on demand.
Years ago, my health product team at Corewell Health embarked on a journey to adopt these practices. At the time, these concepts were new to us, and while we aspired to achieve them, our legacy product presented a significant roadblock: we had never decoupled releases from deployments.
The solution? Feature toggles—a deceptively simple yet transformative pattern that enabled us to decouple deployments from releases, reduce risk, and empower our teams to innovate without hesitation.
If you’re familiar with A/B testing or experimentation, the concept of feature toggles might not be foreign to you. Likewise, if you’ve worked with canary releases, you’ve likely already seen how release on demand, powered by feature toggles, can transform delivery pipelines.
In this post, I’ll share our journey to release on demand, the role of feature toggles in achieving it, and the transformative impact it had on our team and product.
The idea of separating deployments from releases initially baffled us. How could deployment—putting code into production—be disconnected from releasing features to users? It sounded counterintuitive.
But we had ambitious goals: deliver changes to our product continuously, several times a day, with minimal friction and no team intervention. To achieve 99% uptime, remediation within an hour, and low risk, we needed a new way forward.
Enter feature toggles, a pattern that allows teams to enable or disable software features independently of deployments. You’ve likely experienced this as a user: remember when Facebook rolled out a new design to select users while others waited their turn? That’s feature toggling in action.
At its core, feature toggles are implemented as a dictionary of key-value pairs, where each key represents a feature and its value is a boolean: true
(on) or false
(off). Here’s a simple example in JSON:
{
"new_dashboard": false,
"dark_mode": true,
"global_search": true
}
While conceptually simple, feature toggles unlock significant capabilities. They allow you to:
Feature toggles, coupled with monitoring, provide a powerful mechanism to control your application’s state for your entire user base—without requiring code changes.
Feature toggles are instrumental in achieving release on demand within a continuous delivery framework. Here’s how:
Test Toggles in All States: Ensure code changes are 100% production-ready before merging into your product.
Enable Immediate Reversibility: If an issue arises, simply toggle the feature off, eliminating the need for emergency rollbacks.
This approach drastically reduces the risk of continuous delivery, shortens remediation times, and enables instant releases.
When we adopted release on demand, our entire world transformed:
This process empowered everyone. Product teams loved the autonomy. Content teams appreciated the safety net to disable problematic features instantly. And for developers, on-call incidents became virtually nonexistent.
Even with the best systems, things can go wrong. That’s why we embraced fix-forward—a rehearsed strategy for addressing production issues in a continuous delivery environment.
Key elements of a fix-forward strategy include:
For example, we once faced an AWS Kendra outage that disrupted our global search feature. Instead of scrambling to deploy a patch, we simply toggled off search until AWS resolved the issue. Our uptime goal of 99% was maintained, and stress levels remained low.
In an upcoming post, I’ll share our fix-forward playbook to help you create or refine your own.
If you are looking for some open source solutlions, you can check out:
Several paid feature toggle platforms are available to help you manage toggles at scale. Here are a few popular options:
The transformative power of Release on Demand and Continuous Delivery isn't just a lesson from my past—it's a principle I'm actively applying today at TestifySec.
At TestifySec, we’re building a platform that enables continuous compliance and automation for secure software delivery. Our goal is to empower teams to release frequently and confidently while maintaining high standards of quality and security.
When software delivery is fast, reliable, and low-risk, teams can focus on innovation instead of firefighting. At TestifySec, we’re not just creating a tool—we’re building a foundation for organizations to scale their practices and achieve the kind of transformative outcomes that Release on Demand made possible for my team in the past.
If you’re curious about how TestifySec can help your organization achieve this level of agility and confidence, check us out or feel free to reach out.
Sometimes, Release on Demand gets associated with a four-letter word: SAFe.
an over-simplification of SAFe
The Scaled Agile Framework (SAFe) has faced its fair share of criticism in recent years. I’ll be the first to admit—it doesn’t work for every organization or product. In many cases, teams misapply its principles, confuse its concepts, or worse, turn it into a rigid, bureaucratic nightmare. This has led to SAFe becoming a taboo topic in some circles.
But let’s clear something up: Release on Demand is not exclusive to SAFe.
While SAFe teaches and emphasizes this practice, Release on Demand has been a cornerstone of successful software delivery for decades—long before SAFe entered the scene. It’s been used by some of the biggest names in tech, like Facebook, Twitter, Microsoft, and Google.
Release on Demand is a universal practice, independent of frameworks or methodologies. It’s a tool in your toolbox, one that empowers teams to separate releases from deployments, enabling flexibility, risk mitigation, and faster iteration cycles. The key is understanding how to adapt it to your organization’s unique context, rather than being bound to any one framework’s interpretation of it.
Release on demand opens the door to a wealth of advanced practices, from canary releases to runtime feature toggles with defaults, and automated disaster recovery. These topics deserve deep dives of their own, so stay tuned for future posts!
In the meantime, if you haven’t yet explored feature toggles and release on demand, I encourage you to start. They’re more than just technical practices—they’re enablers of innovation, agility, and peace of mind.
12-10-2024