LaunchDarkly provides on-premise and private solutions for our enterprise plans.
This LaunchDarkly blog article explaining the requirements for managing feature flags at an enterprise scale.
LaunchDarkly targeting lets you turn features on or off for individual users or groups of users. You can use the Targeting tab to roll features out for internal testing, private betas, or usability tests before performing a broader rollout. You can create your own rules to target who you want, when you want!
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.
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.
In addition to targeting individual users, LaunchDarkly allows you to target segments of users by constructing custom rules.In other words, you can create custom rules to target users based on any attributes you send us.
Each rule has three parts: an attribute, an operator, and a user value. You can create as many custom targeting rules as you want for each feature flag and even perform percentage rollouts for each rule.
All users that have not been individually targeted or who are not targeted by a custom rule will be evaluated by the default rule.
LaunchDarkly provides you with a centralized dashboard to manage the lifecycle of your features from local development, to QA, to production. Manage multiple different software projects with their own development environments.
Projects allow you to manage multiple different software projects under one LaunchDarkly account. For example, you can create one project called Mobile App and another project called Web App. Each project will have its own unique set of environments and feature flags. By default, all team members in your LaunchDarkly account will have access to every project within that account.
Environments allow you to manage your feature flags throughout your entire development lifecycle — from local development to QA, staging, and production.
When you first sign up, you're provided with two environments within a project. By default, they're named Test and Production. Each environment has its own private SDK key, which is used to connect a LaunchDarkly SDK to a specific environment.
Each feature flag that you create has its own unique set of targeting rules for each environment. This means that you can change your flag rollout rules in a development or staging environment for QA testing before rolling out to production.
The dev console helps you test whether you've set up LaunchDarkly correctly. From the console, you can see your users' feature flag requests and events in real-time.
You can access the dev console from the sidebar. The filter buttons allow you to isolate specific events (like clicks or pageviews) or pinpoint errors and warnings, which represent problems with the data being sent to LaunchDarkly.
The dev console must be the active tab in its browser window. You can have a second window open with your application, if you need to click around in your app in order to generate events.
Please note that in high-volume environments, the events sent to the dev console may be sampled. When this happens, you will see a subset of events on the dev console, instead of every event.
Feature flags/toggles/controls harness the power of test-driven development (TDD). This is the process of releasing and iterating features quickly, testing those features, and making improvements. Think of it as Lean UX methodology. You release light features to receive market feedback. You iterate on that feedback, make improvements, and redeploy.
Think of feature flag-driven development as a way to receive iterative market feedback on your product, rather than solely depend on isolated customer feedback. It’s a way to test how your features perform in the real world and not just in an artificial test environment.
Using LaunchDarkly’s feature flags, you can separate feature rollout from code deployment, allowing you to slowly rollout a feature to a small percentage or subset of users in what is often referred to as a “canary release.” Canary launches allow you to quickly identify issues that might impact your entire user base, roll back easily to a known good version, and fix the issues in a controlled environment. The net result is a better product for all.
Canary releases, also called “soft launches,” give you the confidence to deploy. By giving you the control to roll out a feature and pull it back with minimum public attention, you can release something risky with the least possible fanfare.
You can also perform these types of releases during regular business hours. Gone is the Saturday 3 am deploy to ensure you disrupt as few users as possible. That is the power of feature flags. With LaunchDarkly, you can deploy a feature to 1% of your users on a Friday afternoon, wrapped in a feature flag. If something bad happens, it’s no problem. You can just flip the switch and the feature would be rolled back with only 1% of your users experiencing a few seconds of inconvenience.
In summary, with a completely scalable platform like LaunchDarkly, you can easily roll out features, see the reaction on your users, and either continue rollout or completely shut off.
LaunchDarkly allows teams to develop software in a way that’s fundamentally healthier, removing friction from the Product and Engineering relationship. The results are a dramatic savings in time and focus as well as faster delivery with greater trust.
Empowered product development means that both technical and non-technical team members can collaborate on software releases. Because feature rollout will be decoupled from code deployment, team members outside of Engineering would be able to control the visibility of particular features without compromising the app’s integrity. Product and QA teams are empowered to make changes to feature visibility without consuming engineering resources.
LaunchDarkly offers end to end feature flag management to allow an entire product development organization to control who gets the right feature, when.