La forma en que implementas tus cambios puede marcar la diferencia. En este post, exploraremos que son, los diferentes tipos de despliegues y consideraciones a tener en cuenta en las estrategias de despliegue para garantizar que proyectos se ejecuten satisfactoriamente. ¡Allá vamos!
Lo que vas a ver en este post:
¿Qué es una estrategia de despliegue?
Una estrategia de despliegue se refiere a la metodología utilizada para modificar o actualizar una aplicación con el objetivo de minimizar el tiempo de inactividad y garantizar una transición imperceptible para el usuario.
Existen diversos tipos de estrategias, cada una de ellas adaptada a diferentes situaciones, sin que ninguna sea intrínsecamente superior a las demás. A continuación, exploraremos los aspectos comunes compartidos por las estrategias que detallaremos más adelante. Una estrategia de despliegue debe incorporar las siguientes seis prácticas para asegurar una transición adecuada del servicio a desplegar.
Control de versiones: Implica el uso de un repositorio Git u otra herramienta similar para rastrear y gestionar los cambios realizados en el servicio. Esto garantiza un registro completo de las modificaciones.
Revisión de código: Se trata de un sistema de supervisión de las alteraciones efectuadas en el código. Esto permite un control riguroso sobre las características y funcionalidades introducidas en el servicio, asegurando su correcto funcionamiento.
Integración continua: Este enfoque abarca una serie de procesos diseñados para gestionar la calidad y seguridad del código. Incluye la detección de vulnerabilidades, pruebas de capacidad de carga, construcción de paquetes y pruebas automatizadas. En suma, engloba todos los procedimientos que garanticen la calidad y el funcionamiento adecuado del servicio.
Automatización del despliegue: Implica la implementación de un proceso que permita la liberación de las nuevas características en el servicio sin necesidad de intervención manual. Esto acelera el proceso y reduce la probabilidad de errores humanos.
Supervisión de despliegues: Consiste en un sistema de monitoreo que asegura el óptimo funcionamiento del servicio. Proporciona una visión en tiempo real de su rendimiento y detecta problemas de manera proactiva.
Tipos de despliegues
Estas prácticas son fundamentales para el éxito de una estrategia de despliegue, ya que garantizan la estabilidad, la calidad y la eficiencia en la implementación de cambios en una aplicación. Esta estrategia se enfoca en la implementación de estrategias específicas para incorporar las nuevas funcionalidades en el servicio a desplegar. A continuación, presentamos varias estrategias que se utilizan con frecuencia.
Rolling Upgrade: En este enfoque, se lleva a cabo una actualización secuencial del servicio, actualizando uno a uno los componentes. Este tipo de despliegue tiende a ser lento tanto en su ejecución como en su capacidad de volver atrás (rollback) y generalmente se emplea en combinación con otras estrategias.
Blue/Green: Esta es una estrategia muy común que implica el uso de dos versiones del servicio: la versión nueva (blue) y la versión estable existente (green). Los usuarios continúan utilizando la versión verde mientras se prueba y evalúa la versión azul. Cuando se considera lista, los usuarios cambian a la versión azul. Si se detecta algún problema, es posible regresar a la versión verde.
Red/Black: Similar a la estrategia blue/green, con la diferencia de que se desvía una pequeña porción del tráfico desde la versión negra (estable) hacia la nueva versión. Luego de evaluar su rendimiento, se realiza un desvío aún más grande del tráfico y, finalmente, se redirecciona todo el tráfico hacia la nueva versión. Se mantiene la versión negra en línea para permitir un rollback rápido si es necesario.
Dark Launcher: Se implementa una nueva versión en paralelo a la versión estable existente. La particularidad aquí es que se duplica una parte del tráfico para observar cómo se comporta la nueva versión bajo una carga duplicada. Luego, se realiza un redireccionamiento parcial del tráfico hacia la nueva versión.
Canary Release: Esta estrategia implica un despliegue parcial basado en el tiempo y el rendimiento de la nueva versión. Por ejemplo, se podría liberar el 10% del tráfico en intervalos de una hora, siempre y cuando los errores no superen el 5% del total de las respuestas. Esto permite una implementación gradual y controlada.
Factores a tener en cuenta en las estrategias de despliegue
En el ámbito de las estrategias de despliegue empresarial, resulta de vital importancia tener en cuenta una serie de factores esenciales con el fin de asegurar su efectividad y lograr los objetivos propuestos con éxito.
- Gestión de conexiones de larga duración: Es necesario abordar las conexiones de larga duración de manera cuidadosa durante la implementación.
- Conversiones de Bases de Datos: Las conversiones de bases de datos pueden ser complicadas y deben ejecutarse y revertirse junto con la aplicación, lo que requiere una planificación detallada.
- Microservicios y componentes: Si la aplicación combina microservicios y componentes tradicionales, es posible que se necesite un tiempo de inactividad planificado para completar la transición.
- Requisitos de Infraestructura: Asegurarse de contar con la infraestructura adecuada para respaldar la estrategia de implementación seleccionada.
- Entorno de prueba aislado: Si el entorno de prueba no está aislado, existe el riesgo de afectar tanto las versiones nuevas como las antiguas durante la implementación.
Dado que los usuarios finales generalmente acceden a la aplicación a través de una ruta gestionada por un enrutador, la estrategia de implementación puede centrarse en las funciones de configuración de implementación o en las funciones de enrutamiento.
Las estrategias que se centran en la configuración de la implementación afectan a todas las rutas utilizadas por la aplicación, mientras que las estrategias basadas en funciones de enrutador se aplican a rutas individuales.
Numerosas estrategias de implementación son compatibles con la configuración de implementación, y algunas también aprovechan las características del enrutador, incluyendo:
- Despliegues con Estrategia Rolling y Canary.
- Estrategia Recreate.
- Estrategia Personalizada.
- Despliegue Blue-Green con uso de rutas.
- Despliegues A/B y Canary con uso de rutas.
- Múltiples configuraciones de implementación.
Conclusión
Las estrategias de implementación son primordiales en el logro de resultados en proyectos de desarrollo de software o la introducción de nuevas tecnologías. Desde una planificación meticulosa hasta una ejecución minuciosa y una supervisión constante, la selección de la estrategia apropiada puede ser la línea divisoria entre un lanzamiento triunfal y uno plagado de desafíos.
Descubre más contenidos en nuestro canal de YouTube.