Implementación de Blue Green y Drupal: ¿cuánto sabe realmente?
Publicado: 2019-07-23La implementación azul verde es uno de los pilares de las estrategias de implementación que supera las limitaciones del enfoque tradicional para la implementación de aplicaciones. ¿Cuánto sabe sobre Blue Green Deployment? ¿Cómo se implementa Blue Green Deployment en Drupal?
Sí, lo leiste bien. Tener que desconectar la aplicación para obtener actualizaciones o al lanzar una versión más nueva es una tarea abrumadora y un verdadero dolor de cabeza. Es cierto que puede mitigar esto con tiempos de inactividad programados, pero eso no es algo que hará felices a los clientes. ¡Algunos sitios pierden miles de dólares cada minuto que están inactivos! ¿La implementación o actualización de su aplicación debería ser la verdadera razón detrás de su pérdida?
Conozca por qué la implementación azul verde es la mejor estrategia para reducir el tiempo de inactividad y mitigar otros riesgos relacionados con la implementación de aplicaciones. Descubra más sobre la implementación azul verde y Drupal.
¿Qué es la implementación azul-verde?
La implementación azul-verde es una técnica para liberar aplicaciones cambiando o moviendo el tráfico entre dos entornos idénticos que ejecutan dos versiones diferentes de una aplicación.
En resumen, hay una versión de una aplicación, llamémosla "versión azul" en producción. Y luego, hay un enrutador que se usa para enrutar el tráfico a la aplicación. Ahora necesitas otra versión. la "versión verde" con algunos extras añadidos, que se implementará. Sin embargo, también desea asegurarse de que mientras se lleva a cabo esta implementación, un usuario aún puede ver su aplicación, presionar un botón o hacer lo que quiera, ¡sin que su aplicación se caiga! Más como implementar en secreto la "versión verde" mientras que la "versión azul" maneja todo el tráfico mientras tanto, antes de eventualmente intercambiar las conexiones.

Con capacidades de liberación y reversión de tiempo de inactividad casi nulas, la idea fundamental de la implementación azul-verde es cambiar el tráfico entre dos entornos idénticos que ejecutan dos versiones diferentes de la aplicación. Mientras que la versión actual de la aplicación está representada por el entorno azul, la verde está organizada con una versión diferente.
¿Por qué la implementación azul-verde?
Uno de los principales desafíos con la automatización del proceso de implementación es el corte en sí, es decir, mover la aplicación desde la etapa final de prueba a la etapa en vivo. Y esto debe solucionarse rápidamente para minimizar cualquier tipo de tiempo de inactividad. Esto es exactamente lo que hace la implementación azul-verde. Con dos entornos de producción (lo más idénticos posible en la naturaleza), en un momento dado, uno de ellos está activo. Y mientras se prepara para una nueva versión, realiza todas las pruebas en el otro entorno que no está activo. Una vez que esté listo para comenzar, todo lo que tiene que hacer es cambiar el enrutador para que todo su tráfico se dirija hacia su última versión y el otro entorno simplemente quede inactivo.
Además, la implementación Blue-Green proporciona una de las características más importantes, una reversión rápida. Suponga que si algo sale mal con su última versión, solo tiene que volver a cambiar el enrutador. Si bien aún puede haber un problema con las transacciones perdidas cuando el entorno defectuoso estaba activo, también puede diseñarlo de manera que ambos entornos se alimenten con las transacciones y uno actúe como respaldo del otro.
¿Cómo despliegue azul-verde?
Ahora que conocemos los dos entornos de implementación azul-verde, veamos algunas de las mejores prácticas para implementar el mismo.
Equilibrio de carga sobre conmutación de DNS
Tenga en cuenta que al cambiar de entorno, haga que su dominio apunte eventualmente a diferentes servidores. En lugar de ir a los registros DNS y realizar cambios en la interfaz de administración de DNS, utilice el equilibrio de carga.
El problema de realizar cambios en los registros DNS solo resultará en una larga pista de tráfico. Esto significa que, si bien algunos de sus usuarios seguirán siendo atendidos por el entorno anterior, ni siquiera tendrá control total sobre a dónde se enruta su tráfico.
Sin embargo, los balanceadores de carga le permitirán configurar sus nuevos servidores inmediatamente y no tendrá que depender del mecanismo de DNS. De esta manera, tendrá control total sobre el tráfico y puede estar absolutamente seguro de que todo el tráfico se enruta al nuevo entorno.
Actualización continua
NO cambie todos sus servidores a la vez. En su lugar, ejecute una actualización continua. Es decir, en lugar de cambiar a los servidores verdes de los azules todos a la vez, trabaje con un entorno integrado. Agregue un servidor nuevo, retire uno antiguo. Repita hasta que todos los servidores nuevos estén en su lugar. ¡Esto reducirá su tiempo de inactividad por un gran margen!
Monitoreo ambiental
Si bien monitorear el entorno en vivo es obvio, no querrá que lo tomen por sorpresa al no monitorear el otro entorno. Sí, el seguimiento del otro entorno es menos crítico. Sin embargo, dado que el mismo entorno puede actuar como ambos estados, necesitará una forma más fácil de cambiar las alertas entre los dos. Configure diferentes tokens de API para los dos entornos que informan, o cambie programáticamente la política de alerta en el entorno cuando se cambie / cambie su función.
Automatización
El conjunto manual de acciones solo aumentará su trabajo. En su lugar, escriba cada acción en el proceso de cambio. La automatización del proceso de cambio dará como resultado una implementación más rápida, fácil y segura de la implementación azul-verde.

Implementación azul verde para sitios web de Drupal
Problemas
- Durante las implementaciones de código, Drupal necesita ejecutar actualizaciones de la base de datos para operar y este es un problema importante ya que las actualizaciones de Drupal configuran el sitio web en modo de mantenimiento y sus usuarios son recibidos con esta hermosa pantalla blanca.

Si la implementación falla, entonces una reversión solo es posible restaurando la base de datos desde el volcado, considerando que el esquema de la base de datos puede haber sido modificado. ¡Esto significa tiempo de inactividad!
Solución: ¡Despliegue Azul Verde!
Veamos algunos de los aspectos generales de la infraestructura para implementar Blue Green Deployment con Drupal. Cualquier tipo de operación en Drupal requiere Nginx y un servidor php (para ejecutar principalmente Drupal), necesitamos una base de datos, un almacenamiento de archivos, algo de caché, y la pila está diseñada de manera que sea altamente disponible.
Con Blue Green Deployment, necesita implementar una nueva pila con una nueva base de código y copiar toda su base de datos y los diferentes estados de la base de código anterior, preferiblemente usando Drush.

Una vez que se configuran las dos pilas diferentes, la pila de preparación debe probarse independientemente de la pila de producción. Básicamente, necesita que sus usuarios vayan a la pila (pila de producción) y prueben la versión del sitio web implementada. Y cuando la otra versión (la pila de ensayo) esté lista, solo necesita invertir las versiones. Ahora se dirige a los usuarios a la nueva pila y la versión anterior está disponible para probar.
Implementación azul verde con Docker
Las implementaciones en Drupal no son fáciles. Si bien debe asegurarse de que el código esté implementado, las dependencias del compositor se manejen, las actualizaciones de esquemas estén actualizadas y todas las cachés se borren, también debe asegurarse de que el "sitio web receptivo" esté en funcionamiento. ¿Y qué pasa si hay un problema y falla la implementación? ¿Retrocede? ¿O detener el despliegue?
La frase que está buscando es Despliegue Azul Verde
Durante la implementación de Drupal, Docker garantiza un cambio sencillo entre aplicaciones y facilita la creación y ejecución de diferentes versiones de la misma. En la instancia EC2, siempre hay un conjunto de contenedores docker elevados de color azul y verde, y nginx funciona como un servidor proxy inverso. La implementación azul verde con Docker permite al usuario crear un sitio web Drupal que se ejecuta en paralelo en dos entornos diferentes.
Implementación azul verde con AWS
Si bien históricamente, la implementación azul verde no fue la primera opción para implementar software en las instalaciones debido a su alto costo y complejidad, los contenedores han cambiado esta percepción para siempre.
Los contenedores facilitan la adopción de la implementación azul-verde debido a su paquete sencillo y su comportamiento coherente cuando cambian de un entorno a otro. Y para cambiar la configuración de un contenedor, solo tiene que actualizar su archivo docker y reconstruir y volver a implementar el contenedor en su lugar en lugar de actualizar el software.
Amazon ECS realiza estas actualizaciones continuas cuando actualiza un servicio de Amazon ECS existente. La actualización continua para la implementación de ecs blue green implica reemplazar la versión existente del contenedor por la más reciente. Esta cantidad de contenedores que Amazon ECS agrega o elimina durante la actualización se controla ajustando la cantidad máxima y mínima de tareas en buen estado permitidas durante las implementaciones del servicio.Una vez que se actualiza, la definición de la tarea del servicio se actualiza con la última versión de la imagen del contenedor, Amazon ECS comienza a reemplazar automáticamente la versión anterior del contenedor por la más reciente.

La implementación azul verde con AWS ECS también proporcionará beneficios de optimización, ya que no está atado al mismo conjunto de recursos. Es decir, cuando la envolvente de rendimiento de la aplicación cambia de una versión a otra, simplemente inicia el nuevo entorno con los recursos optimizados (pueden ser menos en número o un conjunto de recursos completamente diferente).
La implementación azul verde en AWS también encaja bien con los flujos de trabajo de implementación e integración continua, controlando sus complejidades al permitir que la automatización de la implementación considere menos dependencias en un entorno existente.
Esta solución permite a los usuarios administrar fácilmente la implementación y la escalabilidad de las plataformas web sin perder tiempo. Esta implementación ayuda a configurar un entorno de alta disponibilidad que ejecutará un sitio web de Drupal sin ningún problema.
