Configuración del despliegue progresivo

El despliegue progresivo automatiza la exposición gradual de las funciones a los usuarios a lo largo del tiempo, eliminando la intervención manual y reduciendo el esfuerzo operativo. Puedes definir varias fases con porcentajes y duraciones específicos, y App Configuration gestiona automáticamente las transiciones entre fases según tu calendario.

La implantación progresiva ofrece varias ventajas a la hora de implementar nuevas funciones, ya que te ayuda a gestionar los riesgos sin dejar de garantizar la coherencia de la experiencia del usuario. Entre las principales ventajas se incluyen:

  • Automatización: elimina la intervención manual en las implementaciones programadas por tiempo.
  • Coherencia: garantiza que un mismo usuario reciba el mismo valor a lo largo de todo el proceso de implantación.
  • Seguridad: te permite detener la implementación en cualquier fase si se detectan problemas.
  • Flexibilidad: admite configuraciones de fases personalizadas o plantillas predefinidas.
  • Previsibilidad: Ofrece lanzamientos de funciones programados y con plazos definidos.

El despliegue progresivo sólo está disponible para los usuarios del nivel Enterprise.

Antes de empezar

Antes de configurar el despliegue progresivo, asegúrate de que:

  • Dispone de una instancia de App Configuration Enterprise
  • Tiene los permisos IAM adecuados (función de administrador o escritor)
  • Ha creado un indicador de función en su entorno

Restricciones de configuración

El despliegue progresivo tiene limitaciones y requisitos específicos que debe comprender antes de la configuración.

Limitaciones generales

Revisa las restricciones generales que se aplican a todas las configuraciones de implantación progresiva. Estas restricciones garantizan un funcionamiento correcto y evitan conflictos con otras funciones.

  • Se requiere el nivel Enterprise: El despliegue progresivo solo está disponible para los usuarios del nivel Enterprise.
  • Una tirada por bandera: Sólo se permite un despliegue progresivo por bandera de característica. Puede configurarlo a nivel de bandera o a nivel de regla, pero no ambos a la vez.
  • Una estrategia de entrega activa cada vez: Si un experimento se está ejecutando en una bandera, no se puede crear un despliegue progresivo. Del mismo modo, si se está ejecutando un despliegue progresivo, no se puede iniciar un experimento en esa bandera.
  • Porcentaje: El porcentaje de despliegue debe estar comprendido entre el 1% y el 100%.

Requisitos API por ámbito de aplicación

La API que utilices dependerá del alcance de tu configuración de implementación progresiva. Selecciona la API adecuada en función del lugar en el que estés configurando la implementación.

  • Despliegue progresivo a nivel de banderas: utilice la API de banderas de características para crear y actualizar el despliegue.
  • Despliegue progresivo a nivel de reglas: utilice la API de reglas para crear y actualizar el despliegue.
  • Detención de un rollout: utilice las API de detención de rollouts para detener un rollout progresivo activo.

Requisitos de configuración por ámbito

Antes de configurar un despliegue progresivo, asegúrate de que tu indicador o regla utilice valores de despliegue explícitos en lugar de valores heredados. Este requisito evita conflictos y garantiza que la implantación progresiva tenga un control total.

  • Para el despliegue progresivo a nivel de bandera: Ninguna de las reglas de orientación puede tener un valor rolloutPercentage heredado de la bandera. Todas las reglas de focalización deben utilizar valores de rollout anulados.
  • Para el despliegue progresivo a nivel de regla: la regla de destino en la que se añade el despliegue no puede utilizar un valor heredado de la bandera. La regla debe tener su propio valor explícito.

Operaciones bloqueadas durante el despliegue progresivo

Cuando una implementación progresiva se encuentra en estado de ejecución, se bloquean determinadas operaciones para mantener la integridad de la implementación y evitar conflictos.

  • Crear otro rollout progresivo: Sólo se permite una tirada progresiva por bandera.
  • Iniciar un experimento: Los experimentos no pueden ejecutarse en banderas que ya tengan un despliegue progresivo en marcha.
  • Borrar una colección: La eliminación de colecciones se bloquea si alguna bandera de característica asociada tiene un despliegue progresivo en estado de ejecución.
  • Actualización o eliminación de un segmento: Las actualizaciones y eliminaciones de segmentos se bloquean si cualquier indicador de función asociado tiene un despliegue progresivo en estado de ejecución.
  • Modificación de la configuración del indicador o de la regla: Las actualizaciones de la bandera o de la regla de focalización que utiliza el rollout sólo se permiten cuando el rollout progresivo no se está ejecutando.

Comportamiento del ciclo de vida

Comprender el comportamiento del ciclo de vida te ayuda a gestionar la interacción entre los lanzamientos progresivos y otras funciones. App Configuration mantiene una separación estricta entre las estrategias de implementación.

  • Si se está ejecutando un experimento, no se puede crear un despliegue progresivo.
  • Si se está ejecutando un despliegue progresivo, no se puede iniciar un experimento en la misma bandera.
  • Para detener un rollout, debe utilizar las APIs dedicadas a detener rollouts.

Configuración del despliegue progresivo

Puede configurar el despliegue progresivo a nivel de bandera o a nivel de regla de destino.

Configuración del despliegue progresivo a nivel de bandera

Para configurar el despliegue progresivo a nivel de bandera:

  1. En la consola App Configuration, vaya a Feature flags.
  2. Seleccione el entorno que contiene su bandera de características.
  3. Haga clic en el indicador de función que desee configurar.
  4. En la sección Despliegue de funciones, seleccione Progresivo como tipo de despliegue.
  5. Configure los ajustes de despliegue:
    • Duración predefinida: Elija entre las plantillas predefinidas ( 1hr, 12hr, 24hr, 48hr ) o seleccione Personalizado
    • Fases: Definir cada fase con un porcentaje y una duración
    • Programar más tarde (opcional): Active esta opción para especificar una hora de inicio en UTC para el despliegue. Si no se activa, el despliegue comienza inmediatamente.
  6. Pulse Guardar.

El despliegue progresivo se iniciará automáticamente a la hora de inicio configurada.

Configuración del despliegue progresivo a nivel de reglas

Para configurar el despliegue progresivo a nivel de reglas de destino:

  1. En la consola App Configuration, vaya a Feature flags.
  2. Seleccione el entorno que contiene su bandera de características.
  3. Haga clic en el indicador de función que desee configurar.
  4. En la sección «Segmentación», selecciona la regla que quieras configurar.
  5. Asegúrese de que la regla tiene un valor anulado.
  6. En la sección Despliegue de la regla, seleccione Progresivo como tipo de despliegue.
  7. Configure los ajustes de despliegue:
    • Duración predefinida: Elija entre las plantillas predefinidas ( 1hr, 12hr, 24hr, 48hr ) o seleccione Personalizado
    • Fases: Definir cada fase con un porcentaje y una duración
    • Programar más tarde (opcional): Active esta opción para especificar una hora de inicio en UTC para el despliegue. Si no se activa, el despliegue comienza inmediatamente.
  8. Pulse Guardar.

Fases progresivas de implantación

Un despliegue progresivo consta de varias fases, cada una de las cuales define un porcentaje y una duración.

Configuración de fases

Define el porcentaje y la duración de cada fase de tu implantación progresiva. Cada fase consta de dos componentes clave que controlan el avance de la implantación.

Cada fase incluye:

  • Porcentaje: El porcentaje de usuarios que recibirán el valor activado (1-100%)
  • Duración: Cuánto debe durar esta fase (por ejemplo, " 8h ", " 30m ", " 2d ")

La fase final no requiere duración, ya que representa el estado de finalización.

Ejemplos de fases

Revisa estos ejemplos de configuraciones de fases de implantación progresiva para distintos escenarios.

Ejemplo 1: implantación gradual de 24 horas

{
  "phases": [
    { "percentage": 5, "duration": "6h" },
    { "percentage": 25, "duration": "6h" },
    { "percentage": 50, "duration": "6h" },
    { "percentage": 100, "duration": "6h" }
  ]
}

Ejemplo 2: Puesta en marcha rápida en 1 hora

{
  "phases": [
    { "percentage": 10, "duration": "15m" },
    { "percentage": 50, "duration": "15m" },
    { "percentage": 100, "duration": "30m" }
  ]
}

Ejemplo 3: Un despliegue conservador de 48 horas

{
  "phases": [
    { "percentage": 5, "duration": "12h" },
    { "percentage": 10, "duration": "12h" },
    { "percentage": 25, "duration": "12h" },
    { "percentage": 100, "duration": "12h" }
  ]
}

Plantillas de despliegue predefinidas

App Configuration ofrece plantillas predefinidas para los escenarios de despliegue más habituales:

Plantillas de despliegue predefinidas
Plantilla Duration Fases
1hr 1 hora 10% ( 15m ), 50% ( 15m ), 100% ( 30m )
12hr 12 horas 5% ( 3h ), 25% ( 3h ), 50% ( 3h ), 100% ( 3h )
24hr 24 horas 5% ( 6h ), 25% ( 6h ), 50% ( 6h ), 100% ( 6h )
48hr 48 horas 5% ( 12h ), 10% ( 12h ), 25% ( 12h ), 100% ( 12h )

Detener un despliegue progresivo

Cuando se detiene una implementación progresiva, App Configuration lleva a cabo varias acciones de limpieza para volver al modo de implementación manual.

  • Se ha eliminado la configuración de implementación.
  • El porcentaje de despliegue se actualiza al porcentaje especificado
  • El tipo de despliegue vuelve a ser manual
  • Los usuarios que recibían el valor activado siguen recibiéndolo en función del porcentaje detenido

Puede detener un despliegue progresivo en cualquier fase si se detectan problemas. Utiliza la API adecuada en función del ámbito de configuración de la implementación.

  • Detener el despliegue a nivel de indicador de función: Para detener un despliegue progresivo configurado a nivel de indicador de función, utiliza la API de detención de despliegue para indicadores de función.
  • Detener el despliegue a nivel de regla: Para detener un despliegue progresivo configurado a nivel de regla de segmentación, utiliza la API de detención del despliegue para reglas.

Finalización progresiva del despliegue

Cuando una implementación progresiva llega a su fase final, App Configuration realiza automáticamente una limpieza y vuelve al modo de implementación manual.

  • La configuración de implementación se elimina automáticamente.
  • El porcentaje de implantación se actualiza al porcentaje de la fase final (normalmente el 100 %).
  • El tipo de despliegue vuelve a ser el despliegue manual.
  • Todos los usuarios reciben el valor activado.

Coherencia y aleatoriedad de los usuarios

El despliegue progresivo garantiza una experiencia de usuario coherente mediante una estrategia de aleatorización en dos niveles que mantiene un comportamiento predecible dentro de cada ciclo de despliegue, al tiempo que permite flexibilidad entre los distintos ciclos de despliegue.

Dentro de un despliegue

Durante un único proceso de implementación progresiva, « App Configuration » mantiene las asignaciones de cada usuario para garantizar una experiencia estable a lo largo de todas las fases.

  • La aleatorización es determinista, según entity_id.
  • El mismo entity_id siempre recibe la misma asignación.
  • Los usuarios que reciban el valor «habilitado» en la fase 1 seguirán recibiéndolo en las fases posteriores.
  • A medida que aumenta el porcentaje, se añaden nuevos usuarios.

En todas las implantaciones

Cuando se inicia una nueva implementación progresiva en el mismo indicador, App Configuration genera una nueva distribución para permitir diferentes patrones de exposición de los usuarios.

  • Se genera una nueva distribución aleatoria.
  • El mismo « entity_id » puede recibir una misión diferente.
  • Esto permite que los distintos grupos de usuarios se incorporen en diferentes ciclos de implementación.

Seguimiento de los despliegues progresivos

Supervisa tus implementaciones progresivas para asegurarte de que avanzan según lo previsto e identificar rápidamente cualquier problema que pueda surgir durante el proceso de implementación.

  • Vista del panel de control: El panel de control de « App Configuration » muestra el estado actual y la fase de los despliegues progresivos activos.
  • Indicadores de estado:
    • QUEUED: El lanzamiento está programado, pero aún no ha comenzado.
    • RUNNING: La implantación avanza a buen ritmo, siguiendo las distintas fases.
  • Seguimiento de actividades: Utiliza « Activity Tracker » para realizar un seguimiento de los eventos de implementación y las transiciones entre fases.

Prácticas recomendadas

Seguir las buenas prácticas que se enumeran aquí ayuda a garantizar el éxito de las implementaciones progresivas y minimiza los riesgos para tus usuarios y aplicaciones.

  • Empieza poco a poco: comienza con un porcentaje bajo (entre el 5 % y el 10 %) para minimizar el riesgo.
  • Supervisar las métricas: supervisar continuamente las métricas de la aplicación durante cada fase.
  • Ten en cuenta las zonas horarias: ten en cuenta las zonas horarias de tus usuarios a la hora de programar la hora de inicio.
  • Configuraciones de prueba: Prueba primero tu configuración de implementación en un entorno que no sea de producción.
  • Planes de implantación de la documentación: Mantén la documentación relativa a tu estrategia y fases de implantación.
  • Elabora planes de reversión: ten preparado un plan para detener la implementación en caso de que se detecten problemas.
  • Utiliza duraciones adecuadas: dedica tiempo suficiente a cada fase para recabar datos significativos.

Referencia de API

El despliegue progresivo puede configurarse mediante la API App Configuration. Consulte la documentación de la API para obtener más información.