An increasingly common way for developers to optimize and test new capabilities is with a technique known as a feature flag. Among the vendors helping developers implement and test feature flags is startup Optimizely, which is continuing to grow its own capabilities with a new microservice-based agent.
Optimizely's core product platform enables developers to do A/B testing for product launches, where different options are analyzed to determine the optimal approach. For example, different variants of a search algorithm can be tested to see which provides the best results. Optimizely also enables developers to implement feature flags within application code, which provides a mechanism to do a silent launch of a new capability that can be gradually rolled out to users, or rolled back if anything goes wrong.
"Optimizely is a company focused on the space of progressive delivery and experimentation,"
Jon Noronha, senior director of product management at Optimizely, told ITPro Today. "What that means is that we help product development teams to speed up that time it takes from having an idea to getting it out in front of their users in a safe, controlled way."
Why Feature Flags Matter
For a long time, the state of the art in development was just having developers work on their own, separate feature branch in a source control tool and then merging code periodically from there, often dealing with things such as merge conflicts, according to Noronha.
A feature flag is a more nuanced and controlled way to get a feature into the hands of users. With a feature flag, a new capability that a development team is working on is wrapped in a conditional switch statement, which can be remotely controlled to enable or disable the feature, he said. With feature flags, developers essentially put toggles across different pieces of a code base that enables features to be turned on or off without entirely redeploying code, Noronha said.
Developers simply use whatever existing integrated development environment (IDE) they want and inject feature flag coding, with help from Optimizely. Noronha said Optimizely has software development kits (SDKs) for the most commonly used development languages and frameworks.
With feature flags, new functionality is often turned off by default when code is first merged and deployed. Then, with the help of Optimizely's platform, the feature flags can be toggled on when appropriate, providing a remote control capability for new feature enablement, he said.
Optimizely Agent Eases Deployment
With the current approach that Optimizely has for feature flag implementation, there is an SDK for each language that a developer might use. Within the SDK is the logic for checking the feature flag state, enabling gradual rollouts or doing an A/B test of different variations. What's sometimes challenging about the approach, according to Noronha, is that development teams have to install each SDK separately for each application or service they're using.
The new Optimizely Agent is an alternative approach for development teams using a container microservices approach for deployment. Instead of installing an SDK for each service, Noronha said developers can simply run the agent as its own container microservice that will communicate with other microservices.
The Optimizely Agent became available as a beta feature on Feb. 6 as an add-on to the core Optimizely platform, which also provides analytics and a management system. The Optimizely Agent is available under an Apache 2.0 open-source license.
Looking forward, Noronha said Optimizely's main focus is improving the developer experience, with the new agent being a big part of that effort.
"We don't think we're done with Agent, and we plan to learn a lot through this beta about where else we can simplify the process," he said.