Las marcas de funciones de App Lifecycle Manager te permiten controlar la disponibilidad y el comportamiento de las funciones dentro de tus aplicaciones, sin necesidad de implementar código nuevo ni realizar cambios en la infraestructura.
Puedes usar marcas de dos maneras principales:
- Integrado: Combina la administración de marcas con las implementaciones de aplicaciones administradas por App Lifecycle Manager.
- Independiente: Usa el sistema de marcas sólido de forma independiente, incluso si la infraestructura de tu aplicación se administra en otro lugar, modelando los componentes del sistema como unidades de App Lifecycle Manager.
Las marcas de funciones se integran con los conceptos principales de App Lifecycle Manager, como las unidades y los lanzamientos. Esto te permite administrar las configuraciones de marcas junto con la infraestructura de tu aplicación (enfoque integrado).
Revisa la descripción general principal de App Lifecycle Manager si no estás familiarizado con las unidades o los lanzamientos de App Lifecycle Manager.
¿Por qué usar marcas de funciones de App Lifecycle Manager?
Cuando implementas marcas de funciones con App Lifecycle Manager, se proporcionan varios beneficios para el ciclo de vida de desarrollo y operaciones de SaaS:
- Separa los lanzamientos de funciones de las implementaciones de código: Envía código nuevo a producción con las funciones inhabilitadas de forma predeterminada. Habilita funciones para usuarios específicos o lánzalas de forma gradual cuando estén listas, lo que reduce el riesgo asociado con las implementaciones grandes.
- Aumenta la seguridad, la velocidad y la confiabilidad:
- Prueba funciones en producción con un público limitado (lanzamientos canary).
- Realiza lanzamientos graduales con las capacidades de lanzamiento de App Lifecycle Manager, lo que minimiza el impacto de posibles problemas.
- Habilita la lista de entidades permitidas y la personalización de usuarios: Activa o desactiva funciones para unidades que pueden representar usuarios, servicios o entornos.
- Simplifica las reversiones: Cuando inhabilitas una marca de función, suele ser mucho más rápido y menos disruptivo que implementar una versión anterior de tu aplicación. Este flujo de trabajo te permite inhabilitar funciones problemáticas sin revertir los archivos binarios.
- Administración unificada de las configuraciones de marcas: Administra las definiciones de marcas de funciones y úsalas para configurar lanzamientos. Este flujo de trabajo proporciona confiabilidad operativa, ya que te permite cambiar la funcionalidad de tu aplicación mediante la creación de lanzamientos de marcas de funciones.
Cómo funcionan las marcas de funciones de App Lifecycle Manager
El uso de marcas de funciones en App Lifecycle Manager implica dos aspectos principales: el plano de administración (definición y lanzamiento de marcas) y el plano de datos (acceso a los valores de las marcas dentro de tu aplicación).
Uso integrado con App Lifecycle Manager
Si usas App Lifecycle Manager para administrar las implementaciones de tu aplicación (por ejemplo, implementar infraestructura con esquemas de Terraform), haz lo siguiente:
- Define marcas: Crea recursos de marcas de función dentro de App Lifecycle Manager, especifica una
Flag keyúnica (por ejemplo,enable-new-dashboard) y asóciala con un tipo de unidad. Se admiten marcas booleanas. - Aprovisiona cambios de marcas: Los cambios en las marcas (creación o actualizaciones) no se activan hasta que inicias un lanzamiento de App Lifecycle Manager. Esto te permite usar funciones como lotes, supervisión y verificaciones de seguridad para las implementaciones de marcas. El lanzamiento actualiza la configuración de marcas asociada con las unidades de destino.
- Marcas de acceso en la aplicación: El código de la aplicación, que se ejecuta dentro de la unidad aprovisionada (por ejemplo, en un contenedor en Cloud Run o Google Kubernetes Engine), usa un SDK de OpenFeature configurado con el proveedor
flagd. Este proveedor se conecta al extremo del serviciosaasconfig.googleapis.com. Con App Lifecycle Manager, inserta el identificador de unidad necesario en el entorno de tu aplicación, lo que permite que el SDK recupere los valores de marcas correctos para esa unidad específica.
Esta integración profunda te permite administrar los ciclos de vida de las funciones junto con los ciclos de vida de la infraestructura. Para ver un ejemplo práctico, consulta la guía de inicio rápido Implementa marcas de funciones.
Plano de administración
Interactúas con el plano de administración para definir y controlar tus marcas. Puedes usar Google Cloud la consola, la gcloud CLI o la API de App Lifecycle Manager para hacer lo siguiente:
- Crear o actualizar marcas: Para definir marcas, especifica la
Flag key, asóciala con un tipo de unidad y establece su tipo y valor predeterminado. - Crear lanzamientos: Inicias un lanzamiento para distribuir los cambios de marcas (creaciones o actualizaciones) a las unidades de destino que pertenecen al tipo de unidad de la marca. Los lanzamientos garantizan que los cambios se apliquen de forma segura y confiable según las políticas configuradas.
Plano de datos
El código de la aplicación interactúa con el plano de datos para consumir valores de marcas:
- SDK de OpenFeature: Integra el SDK de OpenFeature independiente del proveedor en tu aplicación.
- Proveedor
flagd: Configura el SDK de OpenFeature para usar el proveedorflagd. - Configuración: Dirige el proveedor
flagdal extremo del servicio de marcas de funciones de App Lifecycle Manager:saasconfig.googleapis.com:443. - Segmentación: Proporciona el
provider_idpara identificar la configuración de marcas. Por lo general, este valor corresponde al nombre completo del recurso de la unidad de App Lifecycle Manager (por ejemplo,projects/PROJECT_ID/locations/LOCATION/featureFlagsConfigs/UNIT_ID). - Autenticación: El proveedor usa credenciales predeterminadas de la aplicación (ADC) para autenticar de forma segura las solicitudes al Google Cloud extremo del servicio. La cuenta de servicio que se usa necesita el rol de Identity and Access Management
roles/saasconfig.viewer. - Evaluación de marcas: Usa métodos estándar de OpenFeature (
client.get_boolean_value(...)) en tu código para verificar los valores de las marcas. El proveedor controla la recuperación de la configuración lanzada más reciente del servicio.
App Lifecycle Manager proporciona implementaciones y ejemplos de referencia para la integración con el plano de datos:
Tipos de valores de marcas de funciones
Las marcas de funciones de App Lifecycle Manager admiten más que las evaluaciones booleanas estándar de activación/desactivación. Puedes definir marcas con valores STRING, INTEGER o DOUBLE para controlar variables operativas complejas, como umbrales de tiempo de ejecución, parámetros de temas o límites de configuración.
A diferencia de las marcas booleanas, debes definir explícitamente las marcas no booleanas durante la creación para determinar el universo de tipos de devolución posibles.
Marcas de cadena
Las marcas de cadena pasan identificadores de configuración directamente a los clientes conectados.
gcloud beta app-lifecycle-manager flags create "feature-mode" \
--key="feature-mode" \
--flag-value-type=STRING \
--location="global" \
--unit-kind="UNIT_KIND_ID" \
--variants='[{"id": "standard", "stringValue": "STANDARD"}, {"id": "advanced", "stringValue": "ADVANCED"}]' \
--evaluation-spec='{"defaultTarget": "standard"}'
Marcas de números enteros
Las marcas de números enteros rigen los límites numéricos exactos y los límites de carga útil.
gcloud beta app-lifecycle-manager flags create "max-retry-count" \
--key="max-retry-count" \
--flag-value-type=INTEGER \
--location="global" \
--unit-kind="UNIT_KIND_ID" \
--variants='[{"id": "low", "integerValue": 3}, {"id": "high", "integerValue": 10}]' \
--evaluation-spec='{"defaultTarget": "low"}'
Marcas dobles
Las marcas dobles proporcionan valores de alta precisión que se usan para umbrales de probabilidad o parámetros de flotación.
gcloud beta app-lifecycle-manager flags create "sampling-rate" \
--key="sampling-rate" \
--flag-value-type=DOUBLE \
--location="global" \
--unit-kind="demo-test-unitkind" \
--variants='[{"id": "minimal", "doubleValue": 0.01}, {"id": "full", "doubleValue": 1.0}]' \
--evaluation-spec='{"defaultTarget": "minimal"}'
Aprovisiona marcas de funciones con lanzamientos
App Lifecycle Manager garantiza cambios o actualizaciones seguros a gran escala mediante el uso de lanzamientos para aprovisionar actualizaciones de marcas de funciones.
Sin lanzamientos en etapas, un cambio menor en la configuración de marcas (por ejemplo, habilitar una función para el 1% de los usuarios) se propaga de forma instantánea en todas las instancias de la aplicación. Si esta función introduce una regresión, los problemas pueden ocurrir de forma simultánea en toda la infraestructura. Esta propagación global aumenta significativamente el riesgo de un impacto generalizado en el servicio.
Los lanzamientos de App Lifecycle Manager mitigan este riesgo, ya que permiten una distribución gradual y controlada de los cambios de marcas, lo que limita el alcance potencial de cualquier problema imprevisto.
Conjuntos de marcas de funciones
Los conjuntos de marcas de funciones agrupan varias marcas de funciones y te permiten administrarlas como un solo recurso lógico. Esto es útil para lanzar funciones que requieren la coordinación de varias marcas.
Obtén más información sobre los conjuntos de marcas.
Manifiestos
Los manifiestos te permiten definir y administrar marcas de funciones con archivos JSON. Puedes enviar estas definiciones a la API de App Lifecycle Manager o extraer configuraciones existentes para generar descriptores de acceso con seguridad de tipos para tu aplicación.
Obtén más información sobre los manifiestos.
Segmentación compleja
Puedes usar Common Expression Language (CEL) para crear reglas de segmentación sofisticadas basadas en atributos de usuarios o solicitudes para un control preciso sobre qué usuarios ven qué funciones.
Obtén más información sobre la segmentación compleja.
Arquitectura de múltiples usuarios
Puedes usar implementaciones de múltiples usuarios con App Lifecycle Manager si segmentas marcas para unidades o grupos de unidades específicos (con etiquetas o usuarios). También puedes implementar lanzamientos graduales en toda tu flota de usuarios.
Obtén más información sobre la arquitectura de múltiples usuarios.
Asigna marcas de funciones
Define asignaciones (como experimental o baseline) y usa la división de tráfico para realizar pruebas o lanzamientos aleatorios.
Obtén más información sobre las asignaciones de marcas de funciones.
¿Qué sigue?
- Prueba la guía de inicio rápido Implementa marcas de funciones para integrar marcas con una implementación administrada por App Lifecycle Manager.
- Revisa la descripción general principal de App Lifecycle Manager si eres nuevo en la plataforma.