1 puntos por GN⁺ 4 시간 전 | 1 comentarios | Compartir por WhatsApp
  • 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

Servicios relacionados de Cloudflare

  • Workers: construye aplicaciones serverless en la red global de Cloudflare, y Flagship se integra de forma nativa con Workers mediante bindings
  • KV: almacena datos clave-valor en toda la red global de Cloudflare, y Flagship usa esta infraestructura para distribuir la configuración de flags

1 comentarios

 
GN⁺ 4 시간 전
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ífica
    Si 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

    • Al leer esto, me recuerda al patrón de mal uso de los feature flags como configuración/personalización de la aplicación. Es un antipatrón que ya he visto en varias organizaciones
      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
    • La implementación en sí no es difícil. Es poco más que ponerle una operación de módulo a algo como Mersenne Twister, y en trabajos recientes me bastó con Flipper y un endpoint opcional de “estado actual de la tabla de flags”
      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
    • Esa configuración de 0-hop ni siquiera tiene que ser tan sofisticada, y Cloudflare tampoco necesita implementarla por sí mismo. Si te apoyas en OpenFeature, la biblioteca cliente ya integra un motor simple de evaluación de reglas de targeting
    • Buen consejo. Y añadiría que feature flags, pruebas A/B y autorización son tres conceptos distintos. El encuadre de este artículo me pareció útil
      https://www.stigg.io/blog-posts/entitlements-untangled-the-m...
    • En la empresa usamos Statsig con buenos resultados. Está muy pulido y tiene muchas funciones. La herramienta para encontrar flags en desuso candidatos a eliminación está bastante bien
      Contractualmente, el cobro por asiento sí está algo pesado, pero sigue siendo manejable
  • Parece un Boolean-as-a-service con mucho barniz

    • He visto fracasar a equipos enteros porque su empresa no lograba ofrecer bien este tipo de Boolean-as-a-service. Hay una razón por la que existen empresas como LaunchDarkly
      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 mí me parece bien. No quiero andar rastreando miles de feature flags en una base de datos ni construir un dashboard administrativo
      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
    • Entregar ese Boolean al lugar correcto en el momento correcto de forma confiable no es algo trivial
  • 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 targetingKey y 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

    • Probablemente era algo que usaban internamente en Cloudflare y a alguien le pareció que sería divertido hacerlo público
      No parece que hace 6 meses Cloudflare hubiera decidido seriamente construir un competidor de LaunchDarkly
    • Soy ingeniero del equipo de Flagship. Los tokens con alcance por app están en camino
  • 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...

    • Sí. Necesito tanto las funciones enterprise de Zero Trust que probablemente acabaré teniendo que hablar directamente con un ejecutivo de ventas enterprise. Suena como algo que toma mucho tiempo y un estrés que preferiría evitar
  • Ú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

    • El producto es genial y lo he usado con satisfacción durante mucho tiempo, pero en el blog han tenido algunos tropiezos recientemente. La estabilidad también pareció tambalearse por un tiempo, aunque últimamente se ve mejor
    • Después de usar AWS durante algunos años probé Cloudflare, y aunque me gustó la experiencia de usuario, al final regresé por esa misma preocupación. De verdad ya casi llegan, y da pena
    • Hace unos años moví todos mis proyectos a Cloudflare y no me arrepiento. Estoy usando Workers, D1, R2, Queues, Containers, KV
      Para envío de correo todavía uso AWS, así que estaría bien que Cloudflare ofreciera algo en ese lado
    • Yo también hoy abrí un ticket de soporte pidiendo permisos más granulares
    • Esta es exactamente la razón por la que no puedo usar Cloudflare para trabajo real. La capa gratuita para hobby sí me gusta
  • No conocía OpenFeature, pero se ve genial. ¿Alguien tiene experiencia integrándolo? https://openfeature.dev

    • He usado bastante OpenFeature, e incluso hice commits iniciales en algunas bibliotecas cliente. Sí es el futuro de los feature flags, y el ecosistema está creciendo rápido
      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
    • Es bastante útil. Lo usé en mi empresa anterior e hicimos un backend personalizado, pero usando la especificación y los SDK de 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?

    • Que el flag en sí sea Boolean, string, número o cualquier otra cosa es la parte fácil. Lo difícil son las reglas de targeting y rollout, es decir, quién ve qué flag y el requisito de evaluar esas reglas de forma muy rápida y consistente
      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
    • Cuando le agregas rollout por porcentaje, RBAC, historial de auditoría, pruebas A/B y configuración multivariante, se complica rápido. Ese único Boolean se convierte en todo un sistema que hay que mantener y operar
    • Aquí hay un artículo detallado: https://martinfowler.com/articles/feature-toggles.html
    • No siempre son Boolean. Por ejemplo, los feature flags se usan mucho para rollouts A/B
      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í
    • Se puede implementar con un Boolean en una base de datos, así que eso es solo un detalle de implementación
      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

    • Tiene sentido para activar una función a un segmento específico, por ejemplo usuarios de bajos ingresos en Italia, para ver el impacto en negocio o rendimiento
      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
    • La clave de los feature flags es la disciplina. Hay que crearlos con propósito y eliminarlos en cuanto dejen de aportar valor. Aplica KISS
  • 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

    • Me parece curioso delegar los feature flags a un tercero. No es que crea que todo deba construirse internamente, pero con los feature flags nunca hubo gran problema en hacerlo por cuenta propia
  • 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

    • Es el mejor registrador de DNS que he usado hasta ahora