Flujo de trabajo de implementación de servicios azul/verde de Amazon ECS - Amazon Elastic Container Service

Flujo de trabajo de implementación de servicios azul/verde de Amazon ECS

El proceso de implementación azul/verde de Amazon ECS sigue un método estructurado con seis fases distintas que garantizan actualizaciones de aplicaciones seguras y fiables. Cada fase tiene un propósito específico al validar y hacer la transición de la aplicación de la versión actual (azul) a la nueva versión (verde).

  1. Fase de preparación: cree el entorno verde junto con el entorno azul existente. Esto incluye el aprovisionamiento de nuevas revisiones de los servicios y la preparación de los grupos de destino.

  2. Fase de implementación: implemente la nueva revisión de servicio en un entorno verde. Amazon ECS lanza nuevas tareas mediante la revisión de servicio actualizada, mientras que el entorno azul sigue sirviendo al tráfico de producción.

  3. Fase de prueba: valide el entorno verde mediante el enrutamiento del tráfico de prueba. El equilibrador de carga de aplicación dirige las solicitudes de prueba al entorno verde mientras que el tráfico de producción permanece en el entorno azul.

  4. Fase de transferencia de tráfico: transfiera el tráfico de producción de azul a verde en función de la estrategia de implementación que haya configurado. Esta fase incluye puntos de control de monitoreo y validación.

  5. Fase de monitoreo: monitoree el estado de las aplicaciones, las métricas de rendimiento y los estados de alarma durante el periodo correspondiente al tiempo de incorporación. Cuando se detectan problemas, se inicia una operación de reversión.

  6. Fase de finalización: finalice la implementación cerrando el entorno azul o manteniéndolo para posibles escenarios de reversión, según la configuración.

Flujo de trabajo

El siguiente diagrama ilustra el flujo de trabajo integral de implementación azul/verde y muestra la interacción entre Amazon ECS y el equilibrador de carga de aplicación:

Diagrama completo en el que se muestra el proceso de implementación azul/verde en Amazon ECS con interacciones detalladas de los componentes, fases de transferencia de tráfico y puntos de control de monitoreo

El flujo de trabajo de implementación mejorado incluye los siguientes pasos detallados:

  1. Estado inicial: el servicio azul (producción actual) administra el 100 % del tráfico de producción. El equilibrador de carga de aplicación tiene un único oyente con reglas que enrutan todas las solicitudes al grupo de destino azul que contiene tareas azules en buen estado.

  2. Aprovisionamiento de un entorno verde: Amazon ECS crea nuevas tareas mediante la definición de tareas actualizada. Estas tareas se registran en un nuevo grupo de destino verde, pero inicialmente no reciben tráfico.

  3. Validación de comprobaciones de estado: el equilibrador de carga de aplicación realiza comprobaciones de estado de las tareas verdes. La implementación solo pasa a la siguiente fase cuando las tareas verdes superan las comprobaciones de estado.

  4. Enrutamiento de tráfico de prueba: si están configuradas, las reglas de oyente del equilibrador de carga de aplicación enrutan patrones de tráfico específicos (como las solicitudes con encabezados de prueba) al entorno verde para su validación, mientras que el tráfico de producción permanece en el entorno azul. Esto lo controla el mismo oyente que gestiona el tráfico de producción mediante reglas diferentes en función de los atributos de las solicitudes.

  5. Transferencia de tráfico de producción: transfiera el tráfico de producción de azul a verde en función de la configuración de implementación. En las implementaciones azul/verde de ECS, se trata de una transferencia inmediata (de una sola vez) en la que el 100 % del tráfico se traslada del entorno azul al verde. El equilibrador de carga de aplicación utiliza un único oyente con reglas correspondientes que controlan la distribución del tráfico entre los grupos de destino azules y verdes en función de las ponderaciones.

  6. Monitoreo y validación: durante toda la transferencia de tráfico, Amazon ECS monitorea las métricas de CloudWatch, los estados de alarma y el estado de la implementación. Los activadores automáticos de reversión se activan si se detectan problemas.

  7. Tiempo de incorporación: el tiempo durante el cual las revisiones de servicio azul y verde se ejecutan simultáneamente después de que se haya transferido el tráfico de producción.

  8. Cierre del entorno azul: tras la validación y transferencia de tráfico correctos, se ciera el entorno azul para liberar recursos del clúster o se mantiene para poder revertirlo rápidamente.

  9. Estado final: el entorno verde se convierte en el nuevo entorno de producción y gestiona el 100 % del tráfico. La implementación está marcada como exitosa.

Etapas del ciclo de vida de la implementación

El proceso de implementación azul/verde progresa a través de distintas etapas del ciclo de vida (una serie de eventos en la operación de implementación, como “una transferencia de tráfico posterior a la producción”), cada una con responsabilidades específicas y puntos de control de validación. Conocer estas etapas le ayuda a monitorear el progreso de la implementación y a solucionar los problemas de forma eficaz.

Cada etapa del ciclo de vida puede durar hasta 24 horas. Recomendamos que el valor se mantenga por debajo de la marca de 24 horas. Esto se debe a que los procesos asíncronos necesitan tiempo para activar los enlaces. El sistema agota el tiempo de espera, no se realiza la implementación y, después, inicia una reversión cuando una etapa alcanza las 24 horas. Las implementaciones de AWS CloudFormation tienen restricciones de tiempo de espera adicionales. Si bien el límite por etapas de 24 horas sigue vigente, AWS CloudFormation impone un límite de 36 horas para toda la implementación. Si el proceso no se completa en 36 horas, AWS CloudFormation marca un error en la implementación y, a continuación, se inicia una reversión.

Etapas del ciclo de vida Descripción ¿Desea utilizar esta etapa para el enlace de ciclo de vida?
RECONCILE_SERVICE Esta etapa solo ocurre cuando se inicia una nueva implementación de servicio con más de una revisión de servicio en estado ACTIVO.
PRE_SCALE_UP La revisión de servicio verde no ha comenzado. La revisión de servicio azul gestiona el 100 % del tráfico de producción. No hay tráfico de prueba.
SCALE_UP El momento en que la revisión de servicio verde se escala verticalmente al 100 % e inicia nuevas tareas. La revisión de servicio verde no sirve ningún tráfico en este momento. No
POST_SCALE_UP La revisión de servicio verde ha comenzado. La revisión de servicio azul gestiona el 100 % del tráfico de producción. No hay tráfico de prueba.
TEST_TRAFFIC_SHIFT Las revisiones de servicio azul y verde están en curso. La revisión de servicio azul gestiona el 100 % del tráfico de producción. La revisión de servicio verde está migrando del 0 % al 100 % del tráfico de prueba.
POST_TEST_TRAFFIC_SHIFT Se ha completado la transferencia de tráfico de prueba. La revisión de servicio verde gestiona el 100 % del tráfico de prueba.
PRODUCTION_TRAFFIC_SHIFT El tráfico de producción se está transfiriendo a la revisión de servicio verde. La revisión de servicio verde está migrando del 0 % al 100 % del tráfico de producción.
POST_PRODUCTION_TRAFFIC_SHIFT Se ha completado la transferencia de tráfico de producción.
BAKE_TIME El tiempo durante el cual las revisiones de servicio azul y verde se ejecutan simultáneamente. No
CLEAN_UP La revisión de servicio azul se ha reducido verticalmente por completo a 0 tareas en curso. Tras esta etapa, la revisión de servicio verde es ahora la revisión de servicio de producción. No

Cada etapa del ciclo de vida incluye puntos de control de validación integrados que deben superarse antes de pasar a la siguiente etapa. Si se produce un error en la validación, la implementación se puede revertir automáticamente para mantener la disponibilidad y la fiabilidad del servicio.

Cuando utiliza una función de Lambda, esta debe completar el trabajo o devolver IN_PROGRESS en un plazo de 15 minutos. Puede utilizar el callBackDelaySeconds para retrasar la llamada a Lambda. Para obtener más información, consulte la función app.py en sample-amazon-ecs-blue-green-deployment-patterns en GitHub.