Feature flags

La demo proporciona varios feature flags que puedes usar para simular diferentes escenarios. Estos flags son gestionados por flagd, un servicio simple de feature flags que soporta OpenFeature.

Los valores de los flags pueden cambiarse a través de la interfaz de usuario proporcionada en http://localhost:8080/feature cuando ejecutas la demo. Cambiar los valores a través de esta interfaz de usuario se reflejará en el servicio flagd.

Hay dos opciones para cambiar los feature flags a través de la interfaz de usuario:

  • Vista Básica: Una vista amigable en la que las variantes predeterminadas (las mismas opciones que necesitan cambiarse al configurar a través del archivo raw) pueden seleccionarse y guardarse para cada feature flag. Actualmente, la vista básica no soporta targeting fraccional.

  • Vista Avanzada: Una vista en la que se carga el archivo JSON de configuración raw y puede editarse dentro del navegador. La vista proporciona la flexibilidad que viene con editar un archivo JSON raw, sin embargo también proporciona verificación de esquema para asegurar que el JSON es válido y que los valores de configuración proporcionados son correctos.

Feature flags implementados

Feature flagServicio(s)Descripción
adServiceFailureAdGenera un error para GetAds 1/10 de las veces
adServiceManualGcAdDispara recolecciones de basura manuales completas en el servicio ad
adServiceHighCpuAdDispara alta carga de CPU en el servicio ad. Si quieres demostrar throttling de CPU, establece límites de CPU
cartServiceFailureCartGenera un error cada vez que se llama a EmptyCart
emailMemoryLeakEmailSimula una fuga de memoria en el servicio email
llmInaccurateResponseLLMEl servicio mock LLM devuelve un resumen de reseña de producto inexacto para el ID de producto L9ECAV7KIM
llmRateLimitErrorLLMEl servicio mock LLM devuelve intermitentemente un RateLimitError con código de estado HTTP 429
productCatalogFailureProduct CatalogGenera un error para solicitudes GetProduct con ID de producto: OLJCESPC7Z
recommendationServiceCacheFailureRecommendationCrea una fuga de memoria debido a una caché que crece exponencialmente. Crecimiento 1.4x, 50% de solicitudes
paymentServiceFailurePaymentGenera un error al llamar al método charge
paymentServiceUnreachableCheckoutUsa una dirección incorrecta al llamar al PaymentService para que parezca que el PaymentService no está disponible
loadgeneratorFloodHomepageLoad GeneratorComienza a inundar la página de inicio con una gran cantidad de solicitudes, configurable cambiando el JSON de flagd
kafkaQueueProblemsKafkaSobrecarga la cola de Kafka mientras simultáneamente introduce un retraso del lado del consumidor
imageSlowLoadFrontendUtiliza inyección de fallos de envoy, produce un retraso en la carga de imágenes de productos en el frontend

Escenario de depuración guiado

El escenario recommendationServiceCacheFailure tiene un documento de guía dedicado para ayudar a entender cómo puedes depurar fugas de memoria con OpenTelemetry.

Arquitectura de feature flags

Por favor, consulta la documentación de flagd para más información sobre cómo funciona flagd, y el sitio web de OpenFeature para más información sobre cómo funciona OpenFeature, junto con documentación para la API de OpenFeature.