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.
SDK
Versión mínima sin agente
Java dd-openfeature y dd-java-agent
1.65.0
Node.js dd-trace v5
5.116.0
Node.js dd-trace v6
6.5.0
Python ddtrace
4.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:
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.
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:
Fuente
Requisitos
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_config
Datadog 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.
# Required for direct configuration deliveryDD_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.
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 identificationDD_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:
Cree un mapa de claves de indicadores a variantes en la configuración de su prueba.
Registre un InMemoryProvider con ese mapa a través de la API de OpenFeature.
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.
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:
// These attributes will cause exposure events to be dropped
constevaluationContext={targetingKey:req.session?.userID,company:{id:req.session?.companyID},// nested object - NOT SUPPORTED
roles:['admin','user']// array - NOT SUPPORTED
};