Entornos de staging en Azure: ¿Por qué deberías probar los App Services Slots?

 In Servicios Cloud, Azure, CICD, DevOps

Azure App Services

 

App Services

Es probable que en alguna ocasión hayas oído hablar de App Services, el servicio PaaS de Azure para hospedar fácilmente tus aplicaciones web, móviles o APIs. Este servicio está pensado especialmente para desarrolladores: la filosofía de este servicio es que te preocupes únicamente del código mientras Azure se encarga de todo lo demás. Únicamente escoge el stack en el que has desarrollado la aplicación, sube tu código, y tendrás ya tu aplicación en marcha, teniendo a tu disposición funcionalidades de auto-escalado, backups, gestión de certificados,  integración con virtual networks, CDN, etc.

Lo qué quizás no conozcas, especialmente si no has usado este servicio en alguna ocasión, es una de sus funcionalidades estrella más potentes: los Deployment slots.

Deployment slots

Esta funcionalidad permite que puedas tener varias versiones del código de tu aplicación o incluso diferentes configuraciones de tu entorno, cada una en un slot como si fuera un sitio web diferente con su propia dirección web, pero todo en un mismo App Service que además permite intercambiar el slot de producción con otros slots, con lo cuál es ideal para la creación de entornos de staging, especialmente si se combina con procesos de CI/CD.

slots screenshot

Deployment slots screenshot

Características

Estás son algunas de las funciones que ofrecen los Deployment slots:

  • Blue-green deployments: permite intercambiar un slot secundario con el slot de producción.
  • Canary deployments: Es posible determinar la proporción del tráfico que va a producción y a otros slots.
  • Warm-up: Al intercambiar un slot con el de producción previamente se hará warm-up del slot mediante envío de peticiones. Es posible personalizar los parámetros para, por ejemplo, enviar las peticiones a una ruta en particular.
  • Intercambio en dos fases: se copia la configuración del slot destino en el origen, para así probar el código con la configuración «final». Una vez probado puedes decidir cancelar la fase o continuar a la segunda fase, en cuyo caso completaría el intercambio del origen al destino. Independientemente de si se cancela o continúa, el cambio de configuración en el origen se revertirá al terminar el proceso.
  • Rollbacks: después de hacer un intercambio de slots, el nuevo código estará en el slot de producción y el viejo en el de staging, con lo que basta con hacer un intercambió de nuevo para volver a la situación anterior.

Algunos rasgos y consideraciones:

  • Todo App Service tiene al menos el slot de producción.
  • Puedes crear varios slots, el límite depende del App Service Plan que utilices. Son gratis, no comportan un coste adicional a nivel de facturación.
  • Cada slot dispone de su propia URL generada por Azure. Tienes la posibilidad de personalizarla y usar tu propio dominio.
Swap

Slot swap

Caso práctico

Imagina que tienes tu aplicación con url www.site.com en App Service, quieres publicar una nueva versión y despliegas el código en un slot con url staging.site.com. Ambas url pueden ser accesibles en ese instante, con lo que después de hacer las pruebas necesarias en el slot y considerar que esa versión puede salir a producción, intercambias dicho slot (al que previamente se le hace un warm-up) con el de producción y en un instante tendrías publicada la aplicación con tu nuevo código en www.site.com.

Más tarde, te informan de que algunos usuarios recientemente han empezado a tener problemas con alguna funcionalidad de tu web. En este caso puedes hacer un rollback, intercambiando de nuevo el slot de producción con el de staging.

Conclusión

Como habrás visto los Deployment slots son una funcionalidad de App Services muy potente y que creemos que merece mucho la pena si quieres tener entornos de staging sin apenas esfuerzo.

Si tienes más dudas o necesitas de nuestros servicios, ¡Contáctanos!

Recent Posts

Leave a Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.