Ce produit n'est pas pris en charge par le site Datadog que vous avez sélectionné. ().
Présentation
Ce guide décrit le processus de migration de votre logique de migration des Feature Flags de Statsig vers Datadog Feature Flags. Il couvre les mappages conceptuels, l’installation du SDK, l’initialisation et l’évaluation des flags.
Liste de contrôle récapitulative
Remplacez @statsig/js-client par @datadog/openfeature-browser.
Échangez statsig.initialize avec OpenFeature.setProviderAndWait.
Convertissez checkGate en client.getBooleanValue.
Convertissez getDynamicConfig en client.getObjectValue ou client.getStringValue.
Convertissez getLayer en client.getObjectValue et déréférencez les champs de l’objet JSON renvoyé.
Utilisez targetingKey dans le contexte pour identifier les utilisateurs et piloter la randomisation basée sur le pourcentage.
Recréez vos flags Statsig dans Datadog.
Pour les applications côté serveur, utilisez @openfeature/server-sdk et transmettez un contexte d’évaluation par requête au lieu d’un contexte global unique.
Recréez les flags dans Datadog
Avant de modifier les appels SDK dans votre application, recréez vos gates, dynamic configs et layers Statsig en tant que flags dans Datadog. Dans l’interface utilisateur de Datadog, accédez à Software Delivery > Feature Flags et créez des flags qui correspondent à vos clés, types de variant et règles de ciblage Statsig.
Mappage conceptuel
Les concepts fondamentaux entre Statsig et Datadog sont similaires, mais la terminologie diffère légèrement.
Concept Statsig
Concept Datadog
Notes
Feature Gate
Feature Flag (booléen)
Basculements marche/arrêt de base.
Dynamic Config
Feature Flag (JSON/String variants)
Les Feature Flags dans Datadog peuvent renvoyer des chaînes, du JSON ou des nombres, couvrant les cas d’utilisation de Dynamic Config de Statsig.
Layer
Feature Flag (JSON variant)
Utilisez un feature flag à valeur JSON et lisez les champs de l’objet renvoyé, de manière similaire au déréférencement d’une Statsig layer.
Experiment
Feature Flag (with targeting)
Un feature flag Datadog peut être configuré avec des déploiements basés sur des pourcentages et des règles de ciblage spécifiques pour exécuter des experiments. Connectez les Feature Flags à Datadog Experiments pour mesurer l’impact sur les résultats utilisateur.
User/StatsigUser
Evaluation Context
Le contexte (attributs) transmis au SDK pour évaluer les Feature Flags.
Installation
Datadog conçoit ses SDK de Feature Flags pour une utilisation avec OpenFeature. Cela fournit une API indépendante du fournisseur tout en utilisant Datadog comme fournisseur sous-jacent.
Vous devez remplacer l’appel statsig.initialize() par la configuration du fournisseur OpenFeature. Transmettez le contexte d’évaluation à setProviderAndWait au moment de l’enregistrement afin que les Feature Flags soient évalués pour le bon utilisateur dès le départ.
// Configure the Datadog provider
constprovider=newDatadogProvider({clientToken:'<CLIENT_TOKEN>',applicationId:'<APPLICATION_ID>',site:'datadoghq.com',// or datadoghq.eu, etc.
env:'production',// Environment from which to fetch flag configurations
});// Set the evaluation context and register the provider together
constevaluationContext={targetingKey:'user-123',// Identifies the user and drives percentage-based randomization
email:'employee@company.com',plan:'premium',};awaitOpenFeature.setProviderAndWait(provider,evaluationContext);
Le targetingKey est utilisé comme sujet de randomisation pour le ciblage basé sur le pourcentage. Lorsqu'un indicateur cible un pourcentage de sujets (par exemple, 50 %), le targetingKey détermine dans quel bucket se trouve un utilisateur. Les utilisateurs ayant le même targetingKey reçoivent toujours la même variante pour un indicateur donné.
Pour plus d’informations sur la création de jetons client et d’identifiants d’application, consultez Clés d’API et d’application.
Évaluer les Feature Flags (vérifier les gates)
Remplacez les appels checkGate par ceux d’getBooleanValue d’OpenFeature.
Statsig (ancien)
constisEnabled=client.checkGate('new_homepage_design');if(isEnabled){// Show new design
}else{// Show old design
}
Datadog (nouveau)
constclient=OpenFeature.getClient();// The second argument is the fallback value (default) if the flag fails to fetch
constisEnabled=client.getBooleanValue('new_homepage_design',false);if(isEnabled){// Show new design
}else{// Show old design
}
Obtenir la configuration (dynamic configs)
Si vous utilisiez getDynamicConfig ou getExperiment pour récupérer des valeurs non booléennes (chaînes, JSON, nombres), utilisez la méthode typée appropriée dans OpenFeature.
constclient=OpenFeature.getClient();// Assuming your Datadog flag 'banner_config' returns a JSON object variant
constbannerConfig=client.getObjectValue<{title: string}>('banner_config',{title:'Welcome'});consttitle=bannerConfig.title;
Mapper les layers aux Feature Flags d’objet JSON
Les Statsig layers regroupent les paramètres associés sous une seule évaluation. Dans Datadog, utilisez un feature flag à valeur JSON et lisez les champs dont vous avez besoin à partir de l’objet renvoyé.
Statsig (ancien)
constlayer=client.getLayer('user_promo_experiments');constpromoTitle=layer.get('title','Welcome to Statsig!');constdiscount=layer.get('discount',0.1);
Mettre à jour le contexte utilisateur après la connexion
Statsig met à jour le contexte utilisateur en utilisant updateUser. Dans OpenFeature et Datadog, mettez à jour le contexte après l’initialisation avec OpenFeature.setContext(), par exemple après la connexion d’un utilisateur.
// Update the context for all future flag evaluations
awaitOpenFeature.setContext({targetingKey:'user-456',// Identifies the user and drives percentage-based randomization
email:'employee@company.com',plan:'premium',});
Tracking and Exposure
Dans Statsig, la vérification d’un gate enregistre automatiquement une exposure.
Dans Datadog, la télémétrie des Feature Flags se divise en deux catégories :
Exposure logging enregistre le fait qu’un sujet a reçu une flag variant spécifique. Chaque événement d’exposure inclut la flag key, la flag variant servie et le contexte d’évaluation. Utilisez les données d’exposure pour analyser les résultats des experiments et l’adoption des fonctionnalités.
Evaluation logging enregistre la fréquence à laquelle chaque flag variant est renvoyée. Les SDK clients envoient des comptes d’évaluation agrégés par défaut. Les SDKs serveur n’émettent la métrique feature_flag.evaluations qu’après l’activation de l’evaluation logging.
SDKs client : Exposure logging est activé par défaut. Le SDK envoie des exposure events à l’exposures intake. Vous pouvez les consulter dans la liste Feature Flags. Définissez enableExposureLogging: false dans la config DatadogProvider si vous n’avez pas besoin d’exposure tracking.
Paramètre enableRumFeatureFlagTracking par true peut avoir un impact sur les coûts RUM, car il ajoute des évaluations de Feature Flags aux événements RUM. Les deux enableExposureLogging et enableRumFeatureFlagTracking sont activés par défaut pour les SDKs client.
SDKs serveur : Exposure logging est activé par défaut. Evaluation logging est désactivé par défaut. Pour envoyer des métriques d’évaluation depuis les SDK serveur, activez les métriques OpenTelemetry (par exemple, DD_METRICS_OTEL_ENABLED=true) et suivez les conseils spécifiques au langage dans Server-Side Feature Flags.
Contexte côté serveur et dynamique
Les sections précédentes couvrent la migration côté navigateur et côté client, où le contexte d’évaluation est généralement statique pendant toute la durée de la session d’un utilisateur. Les applications côté serveur utilisent un SDK différent et s’authentifient avec une clé d’API Datadog au lieu d’un jeton client. Elles construisent également généralement un nouveau contexte d’évaluation pour chaque requête entrante.
Configurez les variables d’environnement requises avant d’initialiser le SDK serveur :
Le SDK navigateur utilise le contexte d’évaluation défini pour chaque évaluation de feature flag. Vous pouvez mettre à jour ce contexte avec OpenFeature.setContext() lorsque l’utilisateur se connecte ou que ses attributs changent. Le SDK serveur transmet plutôt un nouveau contexte d’évaluation dans chaque appel d’évaluation de feature flag, car un processus gère de nombreux utilisateurs différents.