¿Qué son las estrategias de despliegue?

Una estrategia de despliegue es una forma de cambiar o actualizar una aplicación. El objetivo es realizar el cambio sin tiempo de inactividad de manera que el usuario apenas note el periodo de transición.
Para esto existen varios tipos de estrategias, cabe destacar que ninguno es mejor que otros solo se utilizan en situaciones diferentes. Ahora revisaremos los puntos en común que poseen las estrategias que mencionaremos más adelante.
Una buena estrategia de despliegue debe poseer estas 6 prácticas para asegurar una correcta transición del servicio a desplegar
- control de versiones: puede ser un repositorio git en el cual se mantenga un control de los cambios realizados sobre el servicio
- revisión de código: sistema de supervisión de los cambios realizados para poder controlar las características y funcionalidades que se incorporan al servicio con la finalidad de tener la certeza de que tenga un correcto funcionamiento
- Integración continua: una variedad de procesos los cuales permiten gestionar la calidad y seguridad del código, detectar vulnerabilidades, probar la capacidad de carga, construir empaquetar y testear. Pueden ser todos los procesos que me aseguren la calidad y el correcto funcionamiento de mi servicio
- automatización de despliegue: algún proceso que me permita desplegar sin intervención manual las nuevas características incorporadas al servicio
- supervisión de los desplegados: sistema de monitoreo que me asegure que mi servicio está funcionando de manera óptima.
Tipos de Despliegues
Ahora para el punto 4, es donde se aplica una estrategia en concreto para lograr la incorporación de las nuevas funcionalidades del servicio a desplegar. Para esto tener varias estrategias las cuales mencionaremos a continuación.
- Rolling upgrade: se realiza un actualización en serie del servicio, actualizando de uno en uno los componentes, este despliegue tiende a ser muy lento tanto su ejecución como su rollback y por lo general no se utiliza solo siempre es en combinación con alguna otra
- Blue/green: La estrategia más común es utilizar una implementación green-blue. La nueva versión (la versión blue) se presenta para prueba y evaluación, mientras que los usuarios todavía usan la versión estable (la versión green). Cuando esté listo, los usuarios cambiarán a la versión blue. Si surge un problema, puede volver a la versión green.
- Red/black: muy parecido a blue/gree, con la diferencia que se realiza un pequeño desvío del tráfico de la versión black (estable) a la nueva versión, luego de estudiar su comportamiento se realiza un desvío aún más grande del tráfico para posteriormente redireccionar la totalidad de este, sin dejar de mantener la versión black en linea para poder realizar un rollback de manera rápida en caso de necesitar
- Dark Launcher: se realiza un despliegue en paralelo a la versión estable con la peculiaridad de duplicar el tráfico para ver como se comporta la nueva versión con este trafico duplicado para posteriormente realizar un redireccionamiento parcial del trafico
- Canary Release: en un despliegue parcial en función del tiempo y el comportamiento de la nueva versión a desplegar, por ejemplo la liberacion del 10 % del trafico en intervalos de 1 hora siempre y cuando los errores no superen 5% del total de las respuestas
Hay cosas a considerar al elegir una estrategia de implementación:
- Las conexiones de larga duración deben manejarse con elegancia.
- Las conversiones de bases de datos pueden ser complicadas y deberán realizarse y revertirse junto con la aplicación.
- Si la aplicación es un híbrido de microservicios y componentes tradicionales, es posible que se necesite tiempo de inactividad para completar la transición.
- Necesita la infraestructura para hacer esto.
- Si tiene un entorno de prueba no aislado, puede romper tanto las versiones nuevas como las antiguas.
Dado que el usuario final suele acceder 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 todas las rutas que utilizan la aplicación. Las estrategias que utilizan funciones de enrutador se dirigen a rutas individuales.
Muchas estrategias de implementación son compatibles con la configuración de implementación y algunas estrategias adicionales son compatibles con las características del enrutador.
- Despliegues Rolling Strategy y Canary
- Recreate Strategy
- Custom Strategy
- Blue-Green Deployment usando rutas
- Despliegues A/B Deployment y canary usando rutas
- One Service, Multiple despliegues configuraciones
La estrategia Rolling es la estrategia predeterminada que se utiliza si no se especifica ninguna estrategia en una configuración de implementación.
Te invitamos a que revises el siguiente video, donde mostramos un flujo de integración continua que incluye un despliegue básico
Te invitamos a que veamos como realizamos el despliegue continuo de nuestras soluciones con Argo CD en el siguiente video
No te preocupes, estamos preparando otro video que te muestre los beneficios de un despliegue avanzado, incluyendo los tipos de despliegues, te invitamos a que nos vuelvas a visitar en algunas semanas.
¿Te gustaría saber como realizar estrategias de despliegue con GitLab? Te invitamos a que visites el siguiente microsite que creamos en conjunto con GitLab
https://learn.gitlab.com/turin-gears-microsit?utm_partnerid=0014M00001sEsJpQAK
¿Quieres recibir nuestro newsletter semanal?
Para recibir nuestro Newsletter semanal, sólo debes registrarte con tu correo corporativo
¿Quieres mejorar tu operación?
Si te gusto este blog y quieres implementarlo en tu compañía no dudes en revisar nuestro servicio de CI/CD & GitOps.
¡QUIERO SABER MÁS!