Cloudflare Flagship
(developers.cloudflare.com)- Cloudflare Flagship es el servicio de feature flags de Cloudflare que controla la exposición de funcionalidades de una aplicación sin volver a desplegar código
- Las flags se definen con reglas de segmentación y despliegues graduales basados en porcentaje, y pueden evaluarse directamente desde bindings nativos de Workers
- Es compatible con OpenFeature y con el SDK @cloudflare/flagship se pueden evaluar flags en Workers, Node.js y navegadores
- La segmentación admite atributos de usuario, 11 operadores de comparación, agrupación AND/OR y evaluación secuencial, manteniendo los valores con hashing consistente
- Las variantes admiten booleanos, cadenas, números y objetos JSON, y se crean, modifican o eliminan por aplicación desde el panel de Cloudflare
Funciones principales
-
Bindings de Workers
- Binding reference
- Evalúa flags con bindings nativos de Workers
- Ofrece métodos con seguridad de tipos y fallback automático a valores predeterminados
-
SDK de OpenFeature
- View SDK docs
- El provider de OpenFeature @cloudflare/flagship permite evaluar flags en Workers, Node.js y navegadores
- Al cambiar desde otro proveedor de flags, solo hace falta modificar una línea de configuración
-
Reglas de segmentación
- Learn about targeting
- Entrega distintos valores de flags según los atributos del usuario
- Las reglas admiten 11 operadores de comparación, agrupación lógica AND/OR y evaluación secuencial
-
Despliegue gradual por porcentaje
- Learn about rollouts
- Permite lanzar funcionalidades de forma gradual según un porcentaje de usuarios
- El hashing consistente garantiza que el mismo usuario siempre reciba el mismo valor de la flag
-
Variantes de múltiples tipos
- Use Multi-type variations
- Las variantes de flags pueden ser booleanos, cadenas, números u objetos JSON estructurados
- Las variantes de objetos permiten pasar un bloque completo de configuración con una sola flag
-
Administración de flags
- Use Flag management
- Puedes crear, actualizar y eliminar flags desde el panel de Cloudflare
- Las flags se organizan como apps que se asignan a proyectos o servicios
- Puedes crear tu primera feature flag en la guía Get started guide
1 comentarios
Comentarios de Hacker News
No hay que subestimar una abstracción con 0 viajes de red. Encima de
f(feature_name, context), el contexto se puede ajustar con muchísimo detalle: inventario específico, proveedor específico, usuario específico de un cliente B2B específico, subtipo específico de modelo de negocio, e incluso si algo se muestra o no en una franja horaria específicaSi puedes escribir la lógica directamente y ejecutarla en un tight loop tan rápido como si fuera una constante, la agilidad del negocio aumenta bastante. Si crees que el texto podría cambiar para algunos clientes, puedes convertirlo en código configurable, y de ahí se derivan de forma natural las pruebas y los flags
Eso sí, este tipo de configuración de 0-hop requiere un motor de ejecución en cliente sofisticado, y no parece que Cloudflare haya implementado eso aquí. En Workers con limitaciones de memoria se entiende, pero en infraestructura tradicional convence menos
El enfoque de Statsig me gusta bastante: “Server SDKs hold the entire ruleset of your project in memory...”, esa es la idea
https://docs.statsig.com/sdks/how-evaluation-works
Incluso podrías construirlo tú mismo. Basta con sincronizar el conjunto de reglas en algunas estructuras de datos desde un hilo en segundo plano cada pocos segundos y reemplazar la referencia de forma atómica. Después solo hace falta una interfaz CRUD para la dimensión de las reglas aplicadas
Pero sí hace falta gobernanza sobre quién puede tocar qué candidatos a constantes. Un gran poder conlleva una gran responsabilidad
Yo veo los feature flags más como una herramienta, junto con desarrollo basado en trunk, para activar funcionalidades en QA, no desplegarlas todavía en producción y permitir pruebas por parte de PO/PM. El desarrollo basado en trunk permite un DevOps rápido y sencillo sin estrategias complejas de ramas
En cambio, la configuración de la aplicación es parte de la propia aplicación, y corresponde al ámbito de personalizarla según el contexto del negocio. No sé si existen frameworks o herramientas específicas para esto, pero ambas cosas deberían mantenerse claramente separadas
Fue esa combinación de módulo + aleatoriedad la que hizo que herramientas como LaunchDarkly tuvieran que ofrecer SDKs para muchos lenguajes, y los SDKs con los que me tocó trabajar no encajaban nada bien con esos lenguajes. Creo que empujar la evaluación al edge terminó volviendo todo el sistema más complejo de lo necesario
En la práctica, basta con volver a obtener de vez en cuando la tabla actual de flags “para este cliente”, y es mucho menos molesto. Por suerte existe Flipper y ya no tengo que lidiar con esto manualmente
https://www.stigg.io/blog-posts/entitlements-untangled-the-m...
Contractualmente, el cobro por asiento sí está algo pesado, pero sigue siendo manejable
Parece un Boolean-as-a-service con mucho barniz
Si lo simplificas así, entonces todos los servicios del mundo se pueden reducir a bits-as-a-service. En realidad, aquí hay valor de negocio legítimo y también complejidad en cómo se entrega
A cualquier herramienta SaaS se le puede decir “excel-as-a-service”, y es una frase con más o menos ese mismo nivel de utilidad
En la documentación del SDK de JS aparece esta advertencia: “El provider de cliente necesita un token de API para obtener los valores de los flags. Este token no está limitado a una sola app, así que cualquiera que tenga el token puede evaluar los flags de todas las apps dentro de la cuenta. Úsalo con cuidado en aplicaciones públicas”
https://developers.cloudflare.com/flagship/sdk/client-provid...
Me pregunto por qué un SDK de cliente diseñado para desplegarse en el navegador requiere esa advertencia. ¿Eso significa que cualquier cliente puede enviar solicitudes con un nuevo
targetingKeyy observar los flags de otros usuarios?Los flags no deberían contener información sensible, pero igual parece una decisión de diseño interesante
No parece que hace 6 meses Cloudflare hubiera decidido seriamente construir un competidor de LaunchDarkly
Esto está bien, pero irónicamente sigo esperando a que salga una función que probablemente ofrecerán usando Flagship
https://blog.cloudflare.com/enterprise-grade-features-for-al...
Todavía no parece haber ni un solo caso de funciones exclusivas de enterprise que hayan bajado a cuentas pagadas inferiores
En particular, esto es lo que me interesa:
https://developers.cloudflare.com/speed/optimization/content...
Últimamente Cloudflare lo está haciendo bien, pero le falta control de permisos granular. Todavía hay que crear una cuenta completamente separada para el entorno de producción, y como un dominio solo puede estar vinculado a una sola cuenta, el SSO se complica
Para envío de correo todavía uso AWS, así que estaría bien que Cloudflare ofreciera algo en ese lado
No conocía OpenFeature, pero se ve genial. ¿Alguien tiene experiencia integrándolo? https://openfeature.dev
Para ser transparente, soy el CTO de Flagsmith. En los últimos años he visto una curva claramente ascendente en la adopción de OpenFeature. Antes éramos nosotros quienes recomendábamos a los clientes que lo probaran, pero ahora son los clientes quienes llegan con OpenFeature como requisito
El soporte de los vendors ya está bastante maduro y cubre casi todos los lenguajes. Si estás integrando feature flags en un servicio nuevo o migrando de una implementación propia a una solución de terceros, recomendaría OpenFeature
Tomó unas 2 semanas construir un backend totalmente personalizado. Los SDK para varios lenguajes funcionaron sin problemas. Encontré un bug, pero lo arreglaron el mismo día en que lo reporté
No termino de entender bien los feature flags. ¿En qué se diferencian, en el fondo, de un Boolean en una base de datos?
Los equipos que lo construyen por su cuenta suelen ver cómo el problema crece rápido cuando producto, marketing y ventas quieren hacer targeting con reglas cada vez más complejas
En términos de dificultad general no es un problema especialmente difícil, pero sí es grande. Al principio hacen falta muchas funciones invisibles
En esencia, los feature flags pueden verse más como un sistema de permisos. Se trata de permitir que solo ciertos usuarios accedan a ciertas funciones, y cualquiera que haya trabajado con sistemas de permisos sabe lo complicados que se pueden volver los grupos, grupos jerárquicos, roles, ACL, etc. Esos elementos se parecen a los distintos tipos de reglas de targeting en un sistema de feature flags
Cloudflare también los usa internamente para desplegar primero funciones o builds nuevas a clientes gratuitos, y luego ampliarlas gradualmente a clientes más grandes tras un periodo de estabilización
Los feature flags también se pueden activar de forma aleatoria, casi como una especie de fuzz testing. No lo pienses solo como “algo nuevo”; también puede ser un “cambio de comportamiento”
Podrías pensarlo como un Boolean encima de todos los clientes, pero normalmente no se implementa así
El principal atractivo de los feature flags es que permiten trabajar en la rama principal incluso con funciones grandes que requieren meses y muchos commits. Para mí eso hace el proceso de desarrollo más ligero e iterativo
Contrasta con mantener ramas separadas y hasta objetivos de despliegue separados para funciones que están en desarrollo grande
Los feature flags a menudo están sobrediseñados
Basta con revisar un valor de configuración, un valor en base de datos o una variable de entorno y elegir dinámicamente entre un camino u otro
Eso es todo. Hay que hacer las funciones pequeñas o refactorizar el código para que se puedan activar o desactivar fácilmente a alto nivel
Si eso no se puede hacer fácilmente, una implementación compleja de feature flags sí puede ayudar a coordinar la activación de funciones entre microservicios
Si tienes muchas funciones, un dashboard también puede ser útil
Pero ambas cosas me parecen señales fuertes de que deberías evitar los feature flags. Los feature flags encajan mejor con cambios locales y temporales; de otro modo la complejidad se acumula y se vuelve difícil de gestionar y mantener
Claro, no querrás que un usuario pierda la función solo porque superó el umbral de ingresos o cruzó una frontera, así que necesitas algún tipo de implementación de seguimiento. La analítica y el rastreo de errores también tienen que comunicarse con el servicio de feature flags
No es ciencia espacial, pero sin duda es más complejo que una variable de entorno
Siempre me entusiasma cuando Cloudflare empieza a ofrecer algo para lo que antes había que usar otros proveedores. Hay confianza en que será sólido
En Function usábamos Statsig. Al principio empezaron a usarlo dos personas en un solo producto, pero en 12 meses una parte considerable del texto del producto y de los despliegues ya estaba impulsada por Statsig
Statsig tiene evaluación del lado del cliente, así que se pueden escribir reglas y despliegues basados en conceptos internos sin que los servidores de Statsig tengan que procesar datos de usuarios
Ojalá Cloudflare construya aquí un producto sofisticado para que en adelante no haga falta usar otros productos
No soy más que un usuario común que no conoce bien los detalles técnicos, pero Cloudflare me parece relativamente fácil de usar. Ojalá sigan haciéndolo bien