Variant Experience Server ⟫ Overview
Variant Experience Server Overview
Experience Variation Management
Variant Experience Server is a general purpose experience variation platform, supporting online controlled experiments and feature toggles. Variant is for engineers and technical product owners, who build enterprise applications and look for a robust and cost-effective platform for conducting full stack online controlled experiments or feature toggles at the Internet scale. Variant makes running hundreds of concurrent experiments at a time, or hundreds of production deployments daily a matter of course. Variation schemata allow instrumentation concerns to be completely factored out of the host application’s code base. Fault tolerant, fully programmable and extensible, Variant features direct integration with operational data, negligible overhead, elegant APIs, advanced variation concurrency, and low cost per experiment.
Variant Experience Server is deployed on the same network as the host application(s), either on premises or in the cloud. The server manages variation schemata, containing the experience variation metadata. Each variation schema is a JSON-superset human readable file containing complete definitions off all related experience variations. A single server instance can manage an unlimited number of variation schemata.
Each component of the host application that needs to participate in an experience variation, communicates with Variant server via a native client library *. In addition to the client API, Variant server also exposes server side Extension API, used to extend the server’s default behavior with custom semantics.
- Full stack, feature-scoped experiments or feature toggles.
- Direct integration with operational data.
- Negligible overhead.
- No instrumentation code smell.
- Internet scale.
Online Controlled Experiments on the Internet Scale
Truth be told, a good developer can fashion an A/B test in a relatively short order. It may even be correct and give you the result you’re after. If that’s where you’re headed — you’re there. But if that’s where you’re starting, Variant lets you scale to virtually unlimited number of experiments at the same time. As you evolve your operations from an occasional, custom-coded experiment or feature toggle, to a development model where every new feature is experimented on, you will appreciate Variant’s ease of instrumentation, uncompromised support for experience concurrency, sophisticated domain model, extensibility, and performance.
Full Stack, Feature-Scoped Experiments
Variant’s technology offers a uniquely generalized, patent-pending approach to instrumenting experience variations. This degree of abstraction liberates the developer to think of an experiment as an arbitrary application code delta on arbitrary interactive application(s): Web, mobile, IVR, game console, etc. Variant experiments can involve multiple application components on either side of the firewall.
Server-side Extension API
Extend Variant Experience Server’s default behavior via Lifecycle Hooks and Event Flushers, which are user user code, running in the server’s address space. Lifecycle hooks are listeners to various life-cycle events raised by the server, such as the experiment qualification or experiment targeting events. They are configured in the variation schema and are made available to the server at run time via the /ext directory. Lifecycle hooks can be chained to help you modularize and reuse your code.
Event flushers handle the persistence of Variant events. A few standard event flusher, intended for saving Variant events in popular databases, such as PostgreSQL, come with Variant server, but you may want to create your own, suitable for your operating environment—it only takes minutes.
Direct and Secure Integration With Operational Data
Take advantage of your established technology stack to access live operational data securely and with very low latency from lifecycle hooks and event flushers. Use qualification hooks to qualify your users for an experiment or a feature toggle based on a real-time characteristic, such as last purchase date or credit score. Use event flushers to persist Variant events in an in-house developed analytics data platform.
Advanced Variation Concurrency
Variation concurrency refers to those cases when a particular web page (a mobile screen, IVR phone menu, etc.) is instrumented by multiple experiments or feature toggles. Concurrent experience variations are inevitable because of the Pareto principle, which, as applied to interactive computer applications, states that your users spend 80% of their time on 20% of your application’s UI. These few high-contention pages will be instrumented by multiple concurrent experiments and feature toggles, and Variant gives you a systematic way of handling this concurrency.
Continuous Deployment with Feature Toggles
The world we espouse is one in which the last release train has left the station for good. Release schedules introduce unnecessary operational hurdles with little to show for themselves, apart from the shortened deployment time lag, so long as the trains leave frequently and on time. Which begs the question: why not give every passenger his own train? Many innovative companies are beginning to realize the benefits of continuous deployment, where every self-contained deployment unit is deployed to production under a toggle. You can leverage Variant Experience Server’s sophisticated targeting and qualification facilities to programmatically manage which user population is sent into the new code path, throttle the traffic up or down, depending on circumstances, or even throw the toggle off, should a defect be discovered in the new code. No more expensive code rollbacks affecting unrelated features, or heroic bug-fixing all nighters.
Experience variation metadata is organized in human readable JSON-superset files which are managed by Variant server. Schema files are hot-deployable: just copy a schema file into the
schemata directory, and Variant server will auto-detect and deploy it. This allows you to build a fully-automated deployment pipeline, where in response to certain variant events, you can throttle up or down the traffic into the candidate code path.
Thanks to Variant’s extensible and programmable nature, DevOps engineers can build continuous deployment workflows that are completely automated and free from error-prone human intervention. Experience variations can be employed and tested in the earliest stages of development process, running against a development instance of Variant server. Experience variation metadata is stored in schema files, which are subject to the regular source control. A new feature toggle can be programmatically added to or removed from an existing variation schema.