Contexte d'évaluation

Ce produit n'est pas pris en charge par le site Datadog que vous avez sélectionné. ().

Présentation

Un contexte d’évaluation est l’ensemble des attributs qu’un SDK transmet à Datadog lorsqu’il évalue un flag. Datadog Feature Flags utilise le contexte d’évaluation d’OpenFeature : une flat map d’attributs décrivant le sujet en cours d’évaluation, tel qu’un utilisateur, une session ou un appareil. Les règles de ciblage et les déploiements progressifs lisent ces attributs pour décider quelle variante un sujet reçoit.

Sans contexte d’évaluation, le SDK peut toujours évaluer les flags booléens activés/désactivés. Il ne peut pas faire correspondre les règles de ciblage qui filtrent sur les attributs du sujet, ni produire une attribution de déploiement progressif cohérente pour ce sujet.

La clé de ciblage

La targetingKey est l’identifiant principal dans un contexte d’évaluation. Il s’agit généralement d’un ID utilisateur, d’un ID de session ou d’un ID d’appareil. Datadog utilise la targetingKey pour la randomisation déterministe, afin que le même sujet reçoive systématiquement la même variante pour un flag.

Utilisez un identifiant stable et cohérent pour le même sujet à travers les sessions. Pour les sujets déconnectés ou anonymes, utilisez un identifiant persistant, tel qu’un UUID stocké dans le stockage local ou SharedPreferences, au lieu d’omettre la targetingKey ou de la régénérer à chaque session.

Attributs de contexte

Au-delà de la targetingKey, un contexte d’évaluation peut inclure un nombre illimité d’attributs supplémentaires, tels que user_role, country ou tier. Référencez ces attributs dans les filtres des règles de ciblage pour contrôler qui voit chaque variante.

Datadog Feature Flags exige que les attributs de contexte d'évaluation soient des valeurs primitives simples : chaînes de caractères, nombres et booléens. Les objets et tableaux imbriqués ne sont pas pris en charge et peuvent entraîner la perte des données d'exposition.

Exemple de contexte d’évaluation

const evaluationContext = {
  targetingKey: 'user-123',
  user_id: 'user-123',
  user_role: 'admin',
  country: 'US',
  tier: 'premium',
};
from openfeature.evaluation_context import EvaluationContext

eval_ctx = EvaluationContext(
    targeting_key="user-123",
    attributes={
        "user_id": "user-123",
        "user_role": "admin",
        "country": "US",
        "tier": "premium",
    },
)
evalCtx := openfeature.NewEvaluationContext(
    "user-123",
    map[string]interface{}{
        "user_id":   "user-123",
        "user_role": "admin",
        "country":   "US",
        "tier":      "premium",
    },
)

Contexte côté client vs côté serveur

Les SDK client et serveur définissent le contexte d’évaluation différemment :

  • Les SDK côté client conservent un contexte d’évaluation global unique pour l’instance du SDK. Définissez-le une fois lors de l’initialisation, puis appelez OpenFeature.setContext() pour le mettre à jour lorsque les attributs du sujet changent, par exemple après la connexion d’un utilisateur. Toutes les évaluations de flags ultérieures utilisent le contexte mis à jour.
  • Les SDK côté serveur ne conservent pas de contexte global. Créez un contexte d’évaluation pour chaque requête entrante, en fonction de l’utilisateur ou de la session actuelle, et transmettez-le explicitement à chaque appel d’évaluation de flag pour cette requête. Réutilisez le même objet de contexte pour toutes les évaluations au sein d’une requête, et ne le reconstruisez que si les attributs du sujet changent.

Pour en savoir plus