Kubernetes admite una estrategia de ciclo de vida de desarrollo de software llamada implementaciones de color azul verdoso, que implica ejecutar las versiones nuevas y antiguas de una aplicación simultáneamente en la producción. Siga leyendo para saber qué es una implementación azul-verde y por qué es posible que desee implementar esta táctica para sus aplicaciones de Kubernetes.
¿Qué es una implementación verde azulada?
Una implementación verde azulada es una estrategia del ciclo de vida del desarrollo de software que implica ejecutar las versiones nuevas y anteriores de una aplicación simultáneamente en producción. Los usuarios migran gradualmente de la versión anterior (azul) a la versión más reciente (verde) de la aplicación después de la implementación.
Para una entrega rápida de actualizaciones de software, los desarrolladores necesitaban una forma de implementar funciones de forma continua. Tradicionalmente, las implementaciones de código requerían tiempo de inactividad, por lo que se realizaban en días específicos, ya sea semanal o mensualmente. Esta estrategia ralentiza las actualizaciones del software y no admite la entrega continua.
Las implementaciones de Blue-green resuelven este problema ejecutando tanto las versiones antiguas como las nuevas de una aplicación en producción. La versión azul es la aplicación antigua y la versión verde es la nueva. Los usuarios pasan lentamente a la nueva versión verde después de que se ha implementado. Después de que los usuarios se mueven a la nueva versión verde, la versión azul puede actuar como una conmutación por error si el código debe volver a la versión anterior debido a errores críticos o errores.
Implementación azul-verde frente a rodante con Kubernetes
En muchos entornos empresariales, la producción se ejecuta en varios servidores. En lugar de tener varias versiones ejecutándose simultáneamente, una implementación continua funciona con una versión de una aplicación y actualiza cada servidor individualmente.
Supongamos que tiene dos servidores detrás de un balanceador de carga y que ejecuta una única aplicación de producción. En una implementación continua, un desarrollador saca un servidor de rotación, actualiza la aplicación y luego vuelve a poner el servidor en rotación. El segundo servidor se retira de la rotación y luego se actualiza también. La mayoría de los entornos rodantes tienen tres servidores para que un solo servidor pueda actuar como conmutación por error en caso de que haya errores en el entorno de la nueva versión.
Azul-verde frente a canario con Kubernetes
Las implementaciones de Canary son similares a las implementaciones de color azul verdoso, pero las implementaciones de Canary envían usuarios específicos a la versión más reciente de una aplicación en lugar de mover lentamente a todos los usuarios a la nueva versión. Es una excelente estrategia para probar una nueva aplicación con usuarios interesados en la prueba beta o probar en silencio nuevas funciones con nuevos usuarios para obtener comentarios.
Por lo general, las implementaciones canarias se utilizan en un pequeño subconjunto de usuarios y la versión original aún se ejecuta para la mayoría de los usuarios. Debido a que solo un pequeño subconjunto de usuarios se dirige a la nueva versión, la infraestructura es menos costosa y no necesita ser demasiado avanzada para admitir una pequeña cantidad de usuarios.
Ventajas de una implementación verde azulada
En cualquier entorno de entrega continua, las implementaciones de color azul verdoso ofrecen varios beneficios. Las implementaciones de color verde azul aceleran la entrega de actualizaciones de funciones de aplicaciones. Los desarrolladores ya no necesitan esperar a que una ventana implemente un nuevo código, lo que puede retrasar las implementaciones durante posibles meses.
De los tres tipos de implementación, las implementaciones de color verde azulado son más seguras que las demás. Ambas versiones de la aplicación se ejecutan simultáneamente, por lo que los desarrolladores pueden revertir los cambios sin mucho esfuerzo. Los usuarios no experimentarán tiempo de inactividad ni perderán productividad durante las implementaciones o las reversiones si es necesario.
Desventajas de la implementación de Blue-green
La mayor desventaja de las implementaciones de color azul verdoso es el gasto. Las empresas deben tener el presupuesto de TI para pagar por entornos duales que puedan alojar las versiones azul y verde de una aplicación. Las organizaciones también pagan los gastos generales del personal para mantener y monitorear ambos entornos.
Otro obstáculo para las organizaciones es la sincronización de bases de datos. Los cambios en la base de datos no son tan fáciles de revertir, por lo que las actualizaciones a las tablas y el esquema de la base de datos deben realizarse con cuidado, especialmente si los entornos verde y azul utilizan la misma base de datos. Ambos entornos deben probarse cuidadosamente antes de implementarse en las bases de datos de producción.
Cuándo usar una implementación de color verde azulado con Kubernetes
La entrega continua y Kubernetes van de la mano. Los desarrolladores pueden implementar automáticamente aplicaciones utilizando herramientas de organización como Kubernetes. Kubernetes se puede usar para organizar los entornos azul y verde, y los desarrolladores simplemente pueden implementar código y permitir que Kubernetes administre la promoción de código desde un entorno de almacenamiento provisional hasta la producción.
Los entornos en contenedores son perfectos para implementaciones de color azul verdoso por su capacidad de destruir y reconstruir rápidamente los módulos de aplicaciones para que puedan ejecutar versiones azules o verdes. Si una aplicación de contenedor causa errores, los desarrolladores pueden revertir más fácilmente los cambios a la versión azul.