The Targeting tab allows you to roll a feature out to a percentage of your user base. For example, you can roll a feature out to 1% of users, then gradually scale up to 100% as confidence in the feature increases. LaunchDarkly’s rollouts ensure that a user will always see the same version of a feature until the rollout changes. Top tech companies have termed this a canary release – exposing features to some subset of users (whether it be opt-in, random rollout, or specific segments) is now used to describe what was once a beta.
- Microsoft: In development of Windows 10, Microsoft used “canary” releases to test with internal users within Microsoft. Gabe Aul, who leads the Data & Fundamentals Team in the Operating Systems Group (OSG), said “our Canary ring probably sees 2X-3X as many builds as OSG because we catch problems in Canary and don’t push to OSG.”
- Instagram: “Using ‘canary’ releases, updates go out to a subset of users at first, limiting the ability of buggy software to do damage.” Mike Krieger, Instagram co-founder and CTO, said he uses canary releases because “If stuff blows up it affects a very small percentage of people”.
- Google: For Chrome, Google offers Chrome Canary, which it labels with “Get on the bleeding edge of the web, Google Chrome Canary has the newest of the new Chrome features. Be forewarned: it’s designed for developers and early adopters, and can sometimes break down completely.”
Percentage and Controlled Rollouts – Consistent Hashing
To decide which variation to show to a user, you pass us a unique identifier for that user (like a primary key or UUID) that would be consistent throughout your system. Now, when you request a flag that has a percentage rollout, say 20%, we take that key and hash it to a number between 0 and 100. This is a deterministic, consistent hash, so that user will always be bucketed that way across all your nodes.