Last week, I spoke about the foundational idea of decoupling deployment from release. This week, let’s answer the question, “Why would I want to?”
At a high level, there are really just two reasons:
1. You want to prevent code that’s still a work in progress from being exposed to users before it’s ready.
If you are using Trunk-Based Development, where all code is committed to the main/trunk no less than once a day, you need this decoupling or else your work in process will go live the next time a deploy happens.
Even if you aren’t using Trunk-Based Development, you may want to put code on production in a way that only the dev team can execute it.
That leads us to the second reason you would want to decouple deployment from release:
2. You want to safely test in production, limiting the blast radius if unexpected bad things happen.
Even when you think you are “done” building and testing a feature, there’s still a chance that bad things can happen when that code hits production.
Testing in production may start with just the dev team.
From there, you can proceed through orderly stages of exposure, while checking the health of system and user behavior metrics at each step along the way.
Start small, and learn with less risk
The idea is to start with smaller, low-risk user populations and then to ramp up to larger, higher-risk user populations if things go well or to ramp down to internal users only or just developers doing debugging if things don’t go well.
Don’t roll back or roll forward, just un-release instead
When you decouple deployment from release, you can control the exposure of your code without a rollback or a roll forward. If something goes wrong, there’s no need to re-deploy the prior version or hastily build, test and deploy a patch, since you can simply “un-release” it from any population.
The bottom line is that decoupling deployment from release enables teams to ship more often with greater safety. That, by the way, is why we named this blog and videos, Safe at Any Speed.
Up Next: Progressive Delivery
Next time, we’ll start a two-part series on Progressive Delivery, a term that’s been gaining more traction in the last few months. James Governor of Redmonk coined that term after a conversation with Sam Guckenheimer, the Product Owner of Azure DevOps at Microsoft.
What was it Sam said to James?
Well, when we’re rolling out services. What we do is progressive experimentation because what really matters is the blast radius. How many people will be affected when we roll that service out and what can we learn from them?InfoQ
It’s not just about “turning things off” when things go wrong, but about learning at each stage of the rollout. Being able to turn things off is nice, but without learning, you aren’t really safe, are you? See you next time!
Jump to the next episode of Safe at Any Speed: The Path To Progressive Delivery.
Get Split Certified
Split Arcade includes product explainer videos, clickable product tutorials, manipulatable code examples, and interactive challenges.
Switch It On With Split
The Split Feature Data Platform™ gives you the confidence to move fast without breaking things. Set up feature flags and safely deploy to production, controlling who sees which features and when. Connect every flag to contextual data, so you can know if your features are making things better or worse and act without hesitation. Effortlessly conduct feature experiments like A/B tests without slowing down. Whether you’re looking to increase your releases, to decrease your MTTR, or to ignite your dev team without burning them out–Split is both a feature management platform and partnership to revolutionize the way the work gets done. Switch on a free account today, schedule a demo, or contact us for further questions.