AB Tasty et VWO ont uni leurs forces, car la moitié de la boucle n'a jamais suffi.

En savoir plus sur la fusion

Blog

Comment nous avons adopté OpenFeature pour rendre notre SDK Wingify Feature Experimentation encore plus ouvert

4 Min Read
Comment nous avons adopté OpenFeature pour rendre notre SDK Wingify Feature Experimentation encore plus ouvert

Contexte : pourquoi nous avons adopté OpenFeature

Chez Wingify, nous sommes convaincus qu’une expérience produit de qualité passe par une intégration fluide de la personnalisation et du feature flagging. Notre SDK Wingify Feature Experimentation permet aux équipes tech de contrôler finement l’activation de leurs fonctionnalités et d’adapter leurs interfaces à chaque visiteur.Mais dans un contexte où les écosystèmes techniques se complexifient, il devient crucial de favoriser l’interopérabilité et la flexibilité. C’est là que l’adoption d’OpenFeature prend tout son sens.

OpenFeature : un standard ouvert pour le feature flagging

OpenFeature est une spécification open-source qui fournit une API agnostique pour gérer des feature flags. Elle permet aux développeurs d’intégrer des fonctionnalités de feature flagging de manière cohérente, quel que soit l’outil ou la plateforme utilisée.

Pourquoi c’est utile ?

  • Interopérabilité : une interface de développement (API) unique pour tous les fournisseurs.
  • Évitement du verrouillage fournisseur : changez d’outil sans réécrire votre logique métier.
  • Communauté active : incubé par la CNCF, au cœur des pratiques modernes cloud-native.

Comment ça marche ?

OpenFeature fonctionne avec des providers, qui traduisent ses appels standardisés en appels spécifiques à chaque fournisseur.


? C’est exactement ce que nous avons développé pour Wingify Feature Experimentation.

Ce que nous avons fait : un provider OpenFeature pour Wingify Feature Experimentation

Notre objectif : rendre notre SDK compatible OpenFeature tout en conservant nos fonctionnalités avancées.Nous avons donc développé un provider officiel :
@flagship.io/openfeature-provider-js

Exemple d’intégration (Node.js)


JavaScript
const express = require("express");
const { ABTastyProvider } = require("@flagship.io/openfeature-provider-js");
const { OpenFeature } = require("@openfeature/server-sdk");

const app = express();
app.use(express.json());

const provider = new ABTastyProvider("<ENV_ID>", "<API_KEY>");
await OpenFeature.setProviderAndWait(provider);

app.get("/item", async (req, res) => {
  const evaluationContext = {
    targetingKey: "visitor-id",
    fs_is_vip: true,
  };

  OpenFeature.setContext(evaluationContext);
  const client = OpenFeature.getClient();

  const fsEnableDiscount = await client.getBooleanValue("fs_enable_discount", false, evaluationContext);
  const fsAddToCartBtnColor = await client.getStringValue("fs_add_to_cart_btn_color", "blue", evaluationContext);

  res.json({
    product: {
      name: "Wingify Feature Experimentation T-shirt",
      price: 20,
      discountEnabled: fsEnableDiscount,
      btnColor: fsAddToCartBtnColor,
    },
  });
});

app.listen(3000, () => console.log("Server running on port 3000"));

Zoom technique : intégrer Flagship via OpenFeature

1. Installation des dépendances


Shell
npm install @openfeature/server-sdk
npm install @flagship.io/openfeature-provider-js

2. Initialisation du provider


JavaScript
const { ABTastyProvider } = require("@flagship.io/openfeature-provider-js");
const { OpenFeature } = require("@openfeature/server-sdk");

const provider = new ABTastyProvider("<ENV_ID>", "<API_KEY>");
await OpenFeature.setProviderAndWait(provider);

3. Définition du contexte d’évaluation


JavaScript
const evaluationContext = {
  targetingKey: "visitor-id",
  fs_is_vip: true,
};

OpenFeature.setContext(evaluationContext);

4. Évaluation des flags


JavaScript
const client = OpenFeature.getClient();

const fsEnableDiscount = await client.getBooleanValue(
  "fs_enable_discount",
  false,
  evaluationContext
);

const fsAddToCartBtnColor = await client.getStringValue(
  "fs_add_to_cart_btn_color",
  "blue",
  evaluationContext
);

5. Exemple complet avec Express.js


JavaScript
const express = require("express");
const { ABTastyProvider } = require("@flagship.io/openfeature-provider-js");
const { OpenFeature } = require("@openfeature/server-sdk");

const app = express();
app.use(express.json());

const provider = new ABTastyProvider("<ENV_ID>", "<API_KEY>");
await OpenFeature.setProviderAndWait(provider);

app.get("/item", async (req, res) => {
  const evaluationContext = {
    targetingKey: "visitor-id",
    fs_is_vip: true,
  };

  OpenFeature.setContext(evaluationContext);
  const client = OpenFeature.getClient();

  const fsEnableDiscountValue = await client.getBooleanValue(
    "fs_enable_discount",
    false,
    evaluationContext
  );

  const fsAddToCartBtnColorValue = await client.getStringValue(
    "fs_add_to_cart_btn_color",
    "blue",
    evaluationContext
  );

  res.json({
    item: {
      name: "Flagship T-shirt",
      price: 20,
    },
    fsEnableDiscount: fsEnableDiscountValue,
    fsAddToCartBtnColor: fsAddToCartBtnColorValue,
  });
});

const port = 3000;
app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

Bonus : détection automatique des flags grâce à notre codebase analyser

Pour encore plus de rapidité, nous mettons à disposition un codebase analyser directement intégré dans notre CLI (incluse dans notre extension VSCode).

Ce qu’il fait :

  • Il scanne la codebase du client.
  • Il détecte automatiquement l’utilisation de solutions concurrentes (comme Optimizely, Kameleoon…).
  • Il repère les flags déjà implémentés via OpenFeature.
  • Il propose une création automatique de ces flags dans notre plateforme Flagship.

Résultat ?

➡️ Vous migrez en quelques clics, sans ressaisie.
➡️ Vous testez notre outil Feature Experimentation sans effort.
➡️ Vous gagnez un temps précieux.

Pourquoi c’est important pour nos clients

En adoptant OpenFeature, nous offrons à nos clients :

  • Une intégration plus rapide dans leurs architectures existantes.
  • Une portabilité accrue de leurs déploiements cloud.
  • Une flexibilité totale dans leurs choix technologiques.

Et surtout, nous réaffirmons notre engagement vers un écosystème ouvert et interopérable.

Ressources utiles pour aller plus loin

Categories:

Julie Dumont

Julie Dumont is the Chief Product Officer at AB Tasty. She leads the product vision and strategy, overseeing the development of new features and is dedicated to ensuring AB Tasty continues to be an innovative and market-leading solution for personalization and experimentation.

You might also love to read these

Du business analytics à l’expérimentation : comment tirer le meilleur parti de vos données
15+ Min Read

Du business analytics à l’expérimentation : comment tirer le meilleur parti de vos données

Comment l’optimisation des sites web aide les OTA à rester compétitives en 2026  
15+ Min Read

Comment l’optimisation des sites web aide les OTA à rester compétitives en 2026  

Du test isolé à la croissance stratégique : les 5 étapes de la maturité en expérimentation
12 Min Read

Du test isolé à la croissance stratégique : les 5 étapes de la maturité en expérimentation

La meilleure façon de tester,d'apprendre et de progresser

Demander une démo Démarrer l'essai