Big News! Split is now part of Harness. Learn more at Harness and read why we are excited by this move.

How to Use Feature Management for Continuous Integration

Contents

Split - FeatureManagementForContinuousIntegration

Feature management is a software development technique that allows teams to control the release of new features to their users. It enables devs to quickly test and deploy new features to a subset of users before releasing them to the general public. This approach is a great way to gather feedback and make necessary adjustments before making the feature widely available.

One of the critical benefits of feature management is that it makes it easier to iterate on new features. This provides less risks associated with deploying untested code to production. It also allows teams to test new features with specific groups of users, such as beta testers or users in specific geographic locations. This can provide valuable insights into how the feature will perform in the real world.

Several tools and platforms are available for feature management, each with features and capabilities. Some popular options include LaunchDarkly, Optimizely, Rollout and, of course, Split. These tools typically offer a variety of features, such as A/B testing, feature flagging, and user segmentation.

The Importance of Feature Management in Continuous Integration

Another important aspect of feature management is continuous integration. This is the practice of integrating new code changes into a codebase as often as possible, typically multiple times daily. This allows teams to identify and fix any issues that may arise quickly. It also helps to ensure that new features are thoroughly tested before they are released to users.

Using feature management in conjunction with continuous integration can provide several benefits. For example, teams can use feature flags to turn on new features for a subset of users. Then they can gather feedback and metrics to determine if the feature is ready for release to the general public. Additionally, teams can use feature management to roll back changes if a problem is identified. As a result, this helps minimize the impact of any issues that may arise. This can also reduce the risk of introducing bugs into a production environment, which can be especially important for organizations that rely heavily on their digital systems.

Feature management also allows teams to roll back changes if a problem is identified. This is critical in a continuous integration environment, where new code changes are regularly integrated into a codebase.

Feature-Flagging Explained

Feature flagging enables teams to test features in different environments and configurations, such as test environments, staging environments, or production environments. This can be especially useful when testing features dependent on other systems or services, as it allows teams to perform tests in a more realistic environment.

Feature management can also be used to perform A/B testing and other types of experimentation. This can be particularly useful in a continuous integration environment, allowing teams to test different configurations and versions of a feature to determine which one performs best. This can help teams to identify the most effective version of a feature and make any necessary adjustments before it is released to the general public.

All of these steps allow teams to test and deploy new features with a level of control, flexibility, and safety that is impossible otherwise. They enable teams to test new features with specific groups of users, identify and fix any issues that may arise. They can then roll back changes if necessary, test features in different environments, perform A/B testing, and other types of experimentation. All of the above contributes to delivering features with confidence, faster and with less risk.

How to Set Up Feature Management for Continuous Integration

Setting up feature management for continuous integration is relatively straightforward and can be achieved using a feature management platform such as Split. Split is a popular feature management platform that allows teams to test and deploy new features with control, flexibility, and safety. In this section, we’ll walk through setting up feature management for continuous integration using Split and provide more code examples to help illustrate the process.

The first step in setting up feature management for continuous integration using Split is to sign up for a Split account. You’ll then be prompted to enter a name for the split. You can also add a description and select the environment where the split will be used. Once you have an account, you can create a new split by clicking on the “New Split” button in the Split dashboard.

Next, you’ll need to integrate Split within your codebase by installing the Split SDK. This SDK is available for many programming languages—including Java, JavaScript, Python, and more. Once the SDK is installed, you’ll need to configure it with your Split API key, which can be found in the Split dashboard.

Here is an example of how to install and configure the JavaScript SDK:

npm install @splitsoftware/splitio
Bash
// Initialize the client
const splitio = require("@splitsoftware/splitio");
const client = splitio.SplitFactory({
  core: {
    authorizationKey: "YOUR_API_KEY",
    key: "YOUR_USER_KEY",
  },
});
JavaScript

Once the SDK is installed and configured, you’ll be able to create and manage splits in your code. For example, in JavaScript, you can use the SDK to check if a split is enabled or not, like this:

// Configure the JavaScript SDK
if (client.isEnabled("my_new_feature")) {
  // code for the new feature
} else {
  // code for the old feature
}
JavaScript

You can use the SDK to track the performance of a split by recording metrics such as the number of users or times a feature has been used. Here is an example of how to track a user’s count:

// Track user count
client.track("user_key", "my_new_feature");
JavaScript

This can be useful for gathering data on how a feature is being used and how it is performing.

Once you have set up feature management for continuous integration using Split, you’ll be able to quickly test new features with specific groups of users. As a result, you can track the performance of your features, and make any necessary adjustments before releasing them to the general public. This can minimize the risk of introducing bugs or issues into a production environment and improve the overall quality of your software.

In addition to the example above, Split allows you to manage features using different targeting rules based on user attributes, geography, or device type. This will enable you to test and deploy features to specific segments of your user base, giving you even more control over how and when your features are released. For example, you can target features based on user attributes like:

client.getTreatmentWithConfig("user_key", "my_new_feature", {
  attributes: {
    country: "US",
    age: 30,
  },
});
JavaScript

Overall, setting up feature management for continuous integration using Split is a straightforward process. It can provide teams with the control and flexibility to test and deploy new features confidently.

It’s important to note that, while setting up feature management for continuous integration using Split is relatively straightforward, it’s not a one-time process. Teams must continuously monitor and update their splits and make any necessary adjustments to ensure that their features perform as expected. This can involve updating targeting rules, adjusting the percentage of users in a specific split, or even disabling a feature if it’s not performing as expected.

Best Practices for Using Feature Management in Continuous Integration

Using feature management in continuous integration can significantly improve the quality and speed of delivering new features to your users. However, it’s essential to follow certain best practices to ensure that your feature management implementation is effective.

One of the most important is clearly defining your features’ goals and objectives. This will ensure that your feature management implementation is aligned with your overall business goals and that your teams are working towards a common endpoint. Once the goals are defined, it’s also essential to clearly define the targeting rules and user segments for each feature. This will help ensure that the right users are targeted with the right features at the right time.

Another key best practice is to monitor and measure the performance of your features continuously. This can be done using tools like Split’s built-in analytics, which allow you to track the performance of your features in real-time. It can help you to identify any issues or bugs that may be impacting the performance of a feature. Then you can make any necessary adjustments to improve its performance.

It’s also important to use feature flags throughout the entire development process, not just in the production environment. This allows developers to test and experiment with new features in a safe and controlled environment without the risk of introducing bugs or issues into the production environment.

Here are some more hands-on examples of how to use feature management in continuous integration using Split.

Setting Up Feature Flags

First, you’ll need to create a new feature flag in the Split dashboard. This can be done by navigating to the Features section and clicking on the “New Feature” button.

Next, you’ll need to define the targeting rules for your feature flag. This can be done by specifying the percentage of users you want to target with the new feature and any additional targeting rules, such as user attributes or location.

Finally, you’ll need to integrate the Split SDK into your application. This can be done by installing the SDK using your package manager and initializing it with your Split API key.

import split_sdk

split_sdk.init("YOUR_API_KEY")
JavaScript

Using Feature Flags in Your Codebase

Once you’ve set up your feature flag in the Split dashboard and integrated the SDK into your application, you can start using it in your codebase.

You can check if a feature is enabled or not using the is_feature_enabled method like so:

if split_sdk.is_feature_enabled("new_feature"):
    # execute code for new_feature
else:
    # execute code for the old feature
Python

You can also target a specific user segment using the get_treatment method:

treatment = split_sdk.get_treatment("new_feature", user_id)
if treatment == "on":
    # execute code for new_feature
else:
    # execute code for the old feature
Python

Monitoring and Measuring Feature Performance

Once you’ve deployed your new feature, you’ll need to monitor and measure its performance.

Split provides built-in analytics that allows you to track the performance of your features in real-time, such as conversion rate, user engagement, and more.

Additionally, you can use the track method to send custom events and metrics to the Split dashboard:

split_sdk.track("new_feature", "purchase", user_id, {"price": 25.99})
Python

Experimentation and A/B Testing

One of the best practices is to use feature flags in conjunction with other tools, such as A/B testing and experimentation platforms.

With Split, you can create experiments, define your audience and goals, and see the results of your experiments in real-time.

You can create an experiment like this:

split_sdk.create_experiment("new_feature_experiment", "new_feature", {"on": 50, "off": 50})
Python

Finally, ensuring that your feature management implementation is secure and compliant with any relevant data privacy regulations is essential. This can be done using a secure feature management platform like Split, which provides built-in security and compliance features.

Real-World Examples of Feature Management in Continuous Integration

Feature management is a powerful tool that can be used in various real-world scenarios to improve the quality and performance of your software. Here are a few examples of how feature management can be used in continuous integration.

Roll Out New Features to a Subset of Users

One of the most common use cases is testing new features on a subset of users before releasing them to the entire user base.

A company could use feature management to release a new feature to a small group of beta testers to gather feedback and identify any issues before rolling it out to the entire user base. Like so:

if split_sdk.is_feature_enabled("new_feature", user_id) and user_id in beta_testers_group:
    # execute code for new_feature
else:
    # execute code for the old feature
Python

Gradual Feature Deployment

This can be done by using feature flags to release a new feature to a small percentage of users and gradually increasing that percentage over time.

This approach allows you to monitor the performance of the new feature and make adjustments as needed before releasing it to the entire user base.

Experimentation and A/B Testing

A company could use feature management to run an A/B test on a new feature, comparing its performance to the existing feature.

This would allow the company to gather data on the performance of the new feature and make data-driven decisions about whether to roll it out to the entire user base.

Remote Configurations

Feature management can also be used to configure your application remotely. For example, you can use feature flags to enable or disable certain features or change the behavior of your application depending on the environment it’s running in.

if split_sdk.is_feature_enabled("debug_mode"):
    # enable debug logs
else:
    # disable debug logs
Python

Dark Launching

This is the ability to release a feature to a small percentage of users, or even a single user, without it being visible in the UI. This allows you to test the feature in production and ensure it works as expected before releasing it to the public.

if split_sdk.get_treatment("new_feature", user_id) == "on":
    # execute code for new_feature
else:
    # execute code for the old feature
Python

These are just a few examples of how feature management can be used in continuous integration, but the possibilities are endless.

By using feature management, you can improve the performance of your software, and increase the speed of development. As a result, you can make data-driven decisions about the features you release to your users.

However, it’s important to remember that feature management is not a replacement for good software development practices. It should be used with other tools and processes, such as testing, monitoring, and experimentation. By following best practices and using feature management correctly, you can improve the speed and quality of your software development process.

Get Split Certified

Split Arcade includes product explainer videos, clickable product tutorials, manipulatable code examples, and interactive challenges.

Switch It On With Split

Split gives product development teams the confidence to release features that matter faster. It’s the only feature management and experimentation solution that automatically attributes data-driven insight to every feature that’s released—all while enabling astoundingly easy deployment, profound risk reduction, and better visibility across teams. Split offers more than a platform: It offers partnership. By sticking with customers every step of the way, Split illuminates the path toward continuous improvement and timely innovation. Switch on a trial account, schedule a demo, or contact us for further questions.

Want to Dive Deeper?

We have a lot to explore that can help you understand feature flags. Learn more about benefits, use cases, and real world applications that you can try.

Create Impact With Everything You Build

We’re excited to accompany you on your journey as you build faster, release safer, and launch impactful products.