Feature Flags del lado del servidor

Este producto no es compatible con el sitio Datadog seleccionado. ().

Descripción general

Los Feature Flags de Datadog para aplicaciones del lado del servidor le permiten controlar de forma remota la disponibilidad de funciones, ejecutar experimentos e implementar nuevas funcionalidades con confianza. Los SDK del lado del servidor reciben la configuración de los flags y evalúan los flags localmente. Algunos SDK utilizan un Datadog tracer para la entrega de configuración o telemetría.

Los Feature Flags de Datadog están basados en el estándar OpenFeature, una especificación de código abierto y neutral respecto al proveedor para las API de Feature Flags. Si es nuevo en los conceptos de OpenFeature como proveedores, contexto de evaluación y hooks, consulte la documentación de conceptos de OpenFeature.

Entrega de configuración

La entrega de configuración sin agente es la predeterminada en las versiones del SDK del servidor que la admiten. El SDK obtiene la configuración de los flags directamente desde la CDN administrada por Datadog a través de HTTPS, y luego evalúa los flags localmente. No se requiere un Datadog Agent para la configuración de los flags.

La fuente predeterminada no activa el tráfico de Feature Flags para todas las instalaciones del tracer. El sondeo sin agente comienza solo cuando el código de la aplicación inicializa o accede al proveedor OpenFeature de Datadog. Seleccionar explícitamente remote_config activa la suscripción de Remote Configuration para Feature Flags. Las solicitudes a través de cualquiera de las fuentes contribuyen a la facturación de Feature Flags del servidor.

SDKVersión mínima sin agente
Java dd-openfeature y dd-java-agent1.65.0
Node.js dd-trace v55.116.0
Node.js dd-trace v66.5.0
Python ddtrace4.14.0

La entrega por CDN para Java requiere dd-openfeature y dd-java-agent. No requiere un Datadog Agent para la configuración de los flags.

Las versiones iniciales de Node.js sin agente solo admiten la entrega de configuración y la evaluación local de flags. No exportan métricas de evaluación ni eventos de exposición. La entrega sin agente para Java y Python solo cambia la fuente de configuración. Java y Python no exportan estas señales sin un Datadog Agent compatible o una ruta de telemetría sin servidor.

La entrega Agentless está disponible para los SDK y las versiones enumeradas. Otros SDK de servidor utilizan Agent Remote Configuration.

Elija un idioma

Seleccione su idioma o framework para ver las instrucciones de configuración específicas del SDK:

.NET
Go
Java
Node.js
PHP
Python
Ruby

Para entornos de ejecución Serverless, consulte Entornos Serverless para conocer la configuración Agentless, los requisitos de versión y las limitaciones iniciales de telemetría.

Requisitos previos

Los requisitos dependen del SDK seleccionado y de la fuente de configuración. Los requisitos estándar incluyen:

  • Las versiones del tracer específico del lenguaje o del proveedor de OpenFeature enumeradas en la página del SDK.
  • Una clave de API de Datadog

La entrega por CDN de Java requiere el agente de Java en el proceso de la aplicación. No requiere rastreo de APM ni un servicio de Datadog Agent independiente.

Los requisitos específicos de la fuente son:

FuenteRequisitos
agentless (predeterminado donde sea compatible)Configure DD_API_KEY, DD_SITE y DD_ENV en el proceso de la aplicación. No se requiere ningún Agente para la configuración de flags.
remote_configDatadog Agent 7.55 o posterior con Remote Configuration habilitado, la clave de API configurada en el Datadog Agent y Remote Configuration habilitado para su organización en Organization Settings. Java también requiere versiones compatibles de dd-openfeature y dd-java-agent.

Agentless configuration

En una versión de SDK compatible, configure el proceso de la aplicación:

# Required for direct configuration delivery
DD_API_KEY=<DATADOG_API_KEY>
DD_SITE=<code class="js-region-param region-param" data-region-param="dd_site"></code>
DD_ENV=<YOUR_ENVIRONMENT>

No se requiere la habilitación de Feature Flags ni la configuración de la fuente. Consulte Feature Flags de Java, Feature Flags de Node.js o Feature Flags de Python para conocer las versiones de dependencia y la inicialización específica del lenguaje. La inicialización o el acceso al proveedor inician el sondeo de CDN; la instalación y la inicialización del tracer por sí solas no lo hacen.

Agent Remote Configuration

Para Java, Node.js y Python, establezca la fuente explícitamente para mantener la entrega administrada por Agent Remote Configuration.

DD_FEATURE_FLAGS_CONFIGURATION_SOURCE=remote_config

Remote Configuration está habilitado de forma predeterminada en el Datadog Agent 7.47.0 y versiones posteriores. Si su Datadog Agent tiene Remote Configuration deshabilitado, vuelva a habilitarlo configurando DD_REMOTE_CONFIGURATION_ENABLED=true o agregando remote_configuration.enabled: true a su datadog.yaml.

Consulte la Remote Configuration documentation para obtener instrucciones de configuración detalladas en todos los entornos de implementación.

Las implementaciones existentes de Java, Node.js y Python con DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED=true permanecen en Remote Configuration durante un período de migración. La configuración está obsoleta. Consulte Migrar desde la configuración del proveedor heredado para permanecer en Remote Configuration de manera explícita o pasar a la entrega sin agente.

Remote Configuration polling interval

El Agent sondea a Datadog en busca de actualizaciones de configuración en un intervalo configurable:

# Optional: Configure the Agent polling interval (default: 60s)
DD_REMOTE_CONFIGURATION_REFRESH_INTERVAL=10s

Configuración avanzada de la aplicación

Configure su aplicación con las variables de entorno estándar de Datadog. Estos son comunes en todos los SDK del lado del servidor:

# Required: Service identification
DD_SERVICE=<YOUR_SERVICE_NAME>
DD_ENV=<YOUR_ENVIRONMENT>
DD_VERSION=<YOUR_APP_VERSION>

# Optional: Disable Feature Flags and both delivery paths
# DD_FEATURE_FLAGS_ENABLED=false

# Optional: Enable flag evaluation metrics
# See "Set Up Server-Side Flag Evaluation Metrics" documentation
En las versiones de Java, Node.js y Python enumeradas anteriormente, DD_FEATURE_FLAGS_ENABLED se establece de forma predeterminada en true, por lo que no necesita configurarlo. Configurarlo en false deshabilita el proveedor, el sondeo de CDN y la suscripción de Remote Configuration de Feature Flags. Otros SDK de servidor continúan utilizando la configuración de activación documentada en sus páginas de lenguaje.

Para los SDK y modos de entrega que lo admiten, consulte Configurar métricas de evaluación de flags del lado del servidor para habilitar la feature_flag.evaluations métrica. Las versiones iniciales de Node.js sin agente no exportan métricas de evaluación ni eventos de exposición. Java y Python requieren un Datadog Agent compatible o una ruta de telemetría sin servidor para exportar estas señales. Consulte Gráficos de Feature Flags para obtener más información sobre los gráficos disponibles. Consulte Configurar el enriquecimiento de trazas de APM para Feature Flags para adjuntar datos de evaluación de Feature Flags a las trazas de APM para filtrado y experimentación.

Pruebas con proveedores en memoria

Datadog admite estos enfoques de prueba:

  • Pruebas de integración: Apunte DatadogProvider a un entorno de prueba dedicado y controle los valores de los flags desde la interfaz de usuario de Datadog. Esto ejercita el proveedor real y la fuente de configuración seleccionada de extremo a extremo.
  • Pruebas unitarias: Intercambie DatadogProvider por el InMemoryProvider estándar de OpenFeature (o un stub de prueba equivalente, donde no haya un proveedor en memoria disponible en el lenguaje) y establezca los valores de los flags directamente en el código de prueba. Esto mantiene las pruebas herméticas y sin conexión.

Esta sección cubre el enfoque en memoria. Debido a que la API de OpenFeature está diseñada para que los proveedores sean intercambiables en tiempo de ejecución, el código de su aplicación no cambia; solo el proveedor registrado durante la configuración de la prueba.

Una prueba típica sigue este patrón:

  1. Cree un mapa de claves de indicadores a variantes en la configuración de su prueba.
  2. Registre un InMemoryProvider con ese mapa a través de la API de OpenFeature.
  3. Llame al cliente de OpenFeature en las unidades que se están probando. El InMemoryProvider devuelve las asignaciones de indicadores configuradas en la configuración de la prueba.
  4. Restablezca el proveedor en la finalización de la prueba para evitar la fuga de estado entre pruebas.

Consulte la página del SDK de su lenguaje (seleccione en la parte superior de esta página) para ver un ejemplo concreto de prueba.

Requisitos de atributos de contexto

Los atributos del contexto de evaluación deben ser valores primitivos planos (cadenas, números, booleanos). Los objetos y arreglos anidados no son compatibles y provocarán que los eventos de exposición se descarten silenciosamente.

Utilice atributos planos en su contexto de evaluación:

const evaluationContext = {
  targetingKey: req.session?.userID,
  companyId: req.session?.companyID,
  tier: 'enterprise'
};

const value = client.getBooleanValue('my-flag', false, evaluationContext);

Evite objetos y arreglos anidados:

// These attributes will cause exposure events to be dropped
const evaluationContext = {
  targetingKey: req.session?.userID,
  company: { id: req.session?.companyID },  // nested object - NOT SUPPORTED
  roles: ['admin', 'user']                   // array - NOT SUPPORTED
};

Lecturas adicionales

Para despliegues basados en porcentajes y segmentación determinista, consulte División de tráfico y aleatorización.