A feature rollout is the software development process of introducing a new feature to a set of users.
In the not so recent past, software was rolled out once every week or two, with a number of changes being bundled together, and then monitored. If anything broke, it might necessitate a full roll-back while engineers investigated the issue.
Nowadays, forward-thinking software companies have established new ways to roll out features in a more efficient way, and with little risk.
One benefit of a feature rollout process is that it encourages collaboration and thoughtful planning. It gets teams to incorporate a release strategy into development. Instead of pushing new features to all users in production, developers control releases in the development lifecycle.
Another benefit to feature rollouts is velocity of testing. Teams can test many more hypotheses in less time.
When a product has a large number of users, major changes require experimentation, user acceptance and user training. Rolling out in phases, or segmenting groups of users to test various features, gives a company an opportunity to fully test the UI and user experience, and run more tests.
With the increasing popularity of continuous delivery, product and dev teams are integrating feature release and rollout controls into the product development process. Teams now coordinate to manage releases throughout the development cycle.
Championed by influential developer Martin Fowler, continuous delivery is a software development discipline in which software can be released to production at any time. It has been adopted by leading software companies around the world whose teams are now expected to quickly deliver software that is stable and bug-free.
A feature rollout process involves planning, scheduling, controlling and testing a feature release through different stages and environments. The following are the phases of the process:
Design Design the functionality, examine the use case and develop a timeline.
Develop release strategy Determine parameters of release and how to incorporate user feedback.
Build Develop and integrate, managing the feature’s progression through multiple development environments.
Test Test the feature, using the feature flag to control rollout and user targeting. Assess performance feedback and user feedback.
Release Deploy the feature as ‘off’ in production and then implement your release and rollout strategy.
Gather feedback Build a constant feedback loop.
Continuously release Make incremental changes based on feedback, and continue optimizing the product.
There are a number of ways to deploy new feature rollouts, and one popular method uses feature flags, also known as feature toggles.
Feature flags are a software development technique that turns certain functionality on and off, without deploying new code. This allows for more control and more experimentation over the full lifecycle of features.
Feature flagging allows the continuous delivery and deployment software to users in a faster way. The use of feature flags allows companies to perform gradual feature rollouts, fix bugs in the code without redeploying, and experience a more streamlined development cycle.
A feature variable is a way to instrument feature flags with configurable components or parameters that enable software teams to control or update the feature on the fly, without deploying code.
One example of a feature variable would be a button that could be customized with different colors, copy, size, and placement. This button could be updated without deploying new code.
Feature variables and feature rollouts
Feature variables can be included in Feature Rollouts to modify or hotfix features on the fly without pushing new code. This changes can be rolled out to a percentage of a customer base and specific audiences.
Feature variables and A/B testing
Feature variables can be combined with A/B testing to test different feature configurations to drive improved business metrics. For instance, using feature variables, a company could test different feature configurations to see which drive the best outcomes.
Incorporating A/B testing into your feature deployment is a way to both mitigate risk and also test the impact of new features without releasing the code to everyone.
There is often no shortage of ideas for interesting features; the limiting factor is development time. A/B testing can help create an environment in which test data drives your product roadmap, not individual opinions.
With A/B or split tests, you can set up two variations of user experiences (presented to different groups of users) and evaluate the overall success of each, based on goal outcomes you establish.
Product and engineering teams can now use Optimizely server-side feature management to do rollouts. This allows the same flexibility that product teams have relied on with their experimentation programs to validate hypotheses before launching new products, features, and experiences to everyone.
This experimentation will work seamlessly with the practices of continuous integration and continuous delivery employed by today’s advanced engineering teams. Both teams – and entire companies – will be able to benefit from the faster development cycles, and feature management practices like flags or toggles to mitigate risk.
All of Optimizely’s Full Stack customers can follow in the footsteps of the world’s top software companies (like Amazon, Google and Facebook) to develop their digital experiences, A/B testing to find the best experience possible, then managing a controlled rollout.
Optimizely also now offer free feature flags though Optimizely Rollouts for teams who want to get started with controlled feature releases without the full functionality of Optimizely Full Stack.
With Optimizely, your team can test many possibilities, making it more likely to find better outcomes.