Feature Toggles (sometimes referred to as Feature Flags) have revolutionized software development by allowing features within a software product to be enabled individually or disabled at any point, even after they’ve been rolled out to customers. Feature Toggles at Wayfair boost productivity and provide teams with complete control over when and how to make new capabilities available to end users.
Recent developments in the Feature Toggle space, including new user interfaces, have led to higher reliability and improvements in the time it takes to create and activate the Feature Toggle. In addition, various third-party tools are available in the market now that can track Feature Toggle events, logs, and metrics. They can even provide details on when someone used a particular toggle last.
Feature toggles at Wayfair
Currently, Wayfair has more than 10,000 active Feature Toggles deployed for various services and applications in our production environment (examples follow later in this blog). These are managed by legacy and third-party tools.
As quoted by a product manager from the Wayfair cart checkout team, “Feature Toggles allow me to do final validation in production with real-time data with no customer impact.”
One of the senior engineers with more than ten years of professional experience with Feature Toggles stated that “Feature Toggles allow you to work in the Continuous Integration and Deployment (CICD) environment without breaking the code.”
How and where we use Feature Toggles
As ardent adopters of high-velocity CICD, Wayfair goes the extra mile to minimize customer impact using toggles’ 0 to 100 percent “dial-up” capabilities. Teams follow a gradual dial-up approach by routing only 10 percent of users and consistently monitoring the feature toggle dashboard for any spikes that might raise issues. If there are no discrepancies, teams can gradually dial up the toggle to 100 percent, which makes the toggle fully active and available to all Wayfair users across the globe. This capability is a powerful feature as dialing down a Feature Toggle only takes a couple of minutes, as compared to code roll back which generally takes at least 5 minutes, if not more.
According to one of the senior managers at Wayfair, “With Feature Toggles, you can quickly test the functionality of your code using real-time data without worrying that you'll inadvertently ruin your users' experience. This also enables your team to work on several features concurrently without having to maintain distinct feature branches for each member.”
Another Feature Toggle use case is to provide recommendations or suggestions for items to buy based on the existing items in a customer’s cart at the checkout page. For example, using Feature Flags we can also show our customers new features like pop-ups that prompt them to add an item to their basket or offer suggestions for other products they might want to buy before completing their purchase. This is a simple approach to introduce customers to items they may not have previously seen in our online store and ultimately get them to add more items to their shopping cart.
Wayfair also makes efficient use of Feature Toggles at the back end. For example, Wayfair uses Feature Toggles in its warehouse workflow to improve the efficiency and productivity of the team by automating the process. At our warehouse facilities, we use Feature Toggles to validate solutions and their impact before rolling them out to more facilities. Wayfair also uses Feature Toggles for incremental rollouts, per facilities, per warehouse associates, or both.
In the future, we want features that support operational decisions in our warehouses. For example, a warehouse user who has to find space for a pallet/box for storage in the warehouse can scan the label on the box to see which areas in the warehouse can correctly fit the item based on its dimensions instead of searching around in the warehouse looking for a suitable space.
Feature Toggles work well, but in general, it’s best to keep them short-lived and limit them to a small number. Too many flags or long-lived flags add complexity and create deliberate tech debt. That’s why cleaning up feature flags is important to keep a codebase sane.
When used correctly, feature flags can help companies ship more often, minimize risk, increase productivity, and even help with targeting users and A/B test features. Evaluating a company's branching strategy with feature flags can also be powerful, especially if you need to ship frequently like we do.
Everyday, Wayfair tries to bring as much value to its customers as possible by creating new feature toggles, and our newest toggle will be delivered in the coming weeks. These feature toggles are vital because they allow the teams to adapt quickly to the changes as per the customer feedback received on products. They also fit well with the practice of Continuous Integration and Delivery (CICD) and with techniques like A/B testing and canary releases. But success is not guaranteed. You must have a robust engineering process, solid technical design, and mature toggle life-cycle management. Without these three key considerations, the use of feature toggles can be counter-productive.
This blog and the research behind it would not have been possible without the exceptional support of my manager Ji-Haw Foo. His deep knowledge and attention to details has been an inspiration and kept my work on track from the first day. I would also like to thank my colleagues Mike Bell, Ankur Shah and Prathyusha Bobba for guiding me and providing valuable, timely feedback.