Microsoft's Abel Wang on the Key to Implementing Advanced DevOps: Feature Flags
Microsoft's Abel Wang will not only be keynoting at the upcoming Visual Studio Live! Austin conference, he'll also be presenting a session on: "Advanced DevOps: Deep Dive into Feature Flags." We recently got a chance to ask him more about exactly how feature flags make all the difference when it comes to implementing DevOps on a higher level in the enterprise:
Why are feature flags required for advance DevOps? What makes them essential?
The end goal of DevOps is to continuously deliver value to our end user. In advanced scenarios, this means I need to implement DevOps at speed. Where every developer check-in potentially can flow into production quickly. I also need the ability to roll features out just as quickly if something goes wrong. In a simple Web app, it's easy enough to roll back a change. But think of a scenario where multiple features are added to a highly complex app, merged into master and once the code reaches production, you realize one of the features is broken and needs to be taken out.
"Feature flags let me easily run experiments using AB testing as well as do things like enable preview features to selected users. Running experiments is vital in advanced DevOps. And the ease of implementing them with feature flags is invaluable."
Abel Wang, Senior Cloud Developer Advocate, Microsoft
How do you do that? Go back to your branches and try to cherry pick the changes? Good luck with that. That's like me getting you a cup of coffee, putting sugar into it and having you tell me, nah, I just want pure coffee. Can you just remove the sugar from that coffee? Uh ... O.K. I can probably do that but it's going to take some time and some serious amounts of work. And you still probably won't get that pure cup of coffee .... But with feature flags, this is a piece of cake. Just flip the switch to the broken feature and bam, you just removed that feature.
In advanced DevOps scenarios, I also need to deploy new features carefully. And by carefully, I mean I need to mitigate the risk of deploying new code. With feature flags, this lets me easily roll my releases out slowly to a small group of people, and slowly increasing that group making sure the new features aren't breaking anything.
Feature flags also let me easily run experiments using AB testing as well as do things like enable preview features to selected users. Running experiments is vital in advanced DevOps. And the ease of implementing them with feature flags is invaluable.
Are feature flags always boolean?
Feature flags absolutely do not have to be boolean. Often, they are but they can be multivariate. A multivariate feature flag is when you define the number and type of variations that can be returned. And based on the returned value, your code can do different things. This allows you to control conditional logic separate from your code base. Which in turn allows you to change how features are configured without needing to redeploy.
What are the main challenges you find that enterprises face in implementing DevOps both safely and quickly?
My teammate Steve Murawski always says "Slow is smooth and smooth is fast." Trying to move quickly into production is hard and risky. The faster you try to go, the more risk you take on. The biggest challenge is ultimately, how can I balance moving quickly while still mitigating risk.
What benefits can DevOps at speed really give enterprises?
We want to continuously deliver value to our end users. Notice I didn't just say features. Because we can continuously deliver feature after feature. But if that's not providing real value to our end users, what's the point? But if we can deliver value faster, our end users win. Think of how Microsoft used to work. We delivered new versions once every three to four years. If someone reported a bug, I could fix it that day. But the end user wouldn't see that fix for 3 years!!!! Compare that to today, where multiple bug fixes can go out each day for VSTS. If there is a blocking bug for you, we can have that fixed and pushed out to your ring extremely quickly!
What specific tools does Microsoft offer to help enterprises implement advanced DevOps with feature flags?
Can I tell you a secret? My favorite solution is only halfway a "Microsoft" solution. I love using LaunchDarkly with VSTS. LaunchDarkly is a third-party Software-as-a-Service implementation of feature flags that integrate with VSTS really nicely.
Want more? Consider joining your peers and meeting Abel and other experts in person at Visual Studio Live! in Austin.