Reduzca el time-to-market de sus proyectos software con Visual Studio Release Management

¿Qué es Release Management?

Se define como Release Management (RM) al proceso de gestión de las entregas de software que abarca desde las etapas de construcción hasta el despliegue de dicho software en sus diferentes entornos de operación.

Es una disciplina surgida como consecuencia del aumento de la complejidad tanto de los proyectos de desarrollo software cómo de las arquitecturas físicas de los entornos de operación donde dicho software operará, especialmente en los últimos años donde dichas aplicaciones además deben contemplar su disponibilidad en multiples dispositivos móviles, etc.

Esos dos factores de complejidad, unidos a la demanda de mayor celeridad a la hora de llegar al mercado, hacen necesario definir y automatizar en la medida de lo posible cómo se despliega el software. Adicionalmente, como en todo procedimiento, también se busca establecer una línea base en el proceso de despliegue de manera que pueda ser medido su rendimiento y mejorado en caso necesario.

Aunque esta definición puede parecer relativamente sencilla de entender, existe dentro del panorama actual, cierto mal entendimiento sobre qué es Release Management exactamente.

¿Qué NO es Release Management?

El proceso de Release Management puede y debe formar parte de un proceso de ámbito mayor que es el de Gestión del Ciclo de Vida de las Aplicaciones o Application Lifecycle Management (ALM).

Anteriormente hemos visto que Release Management se enfoca en el proceso de entrega y despliegue del software a sus entornos de operación. A menudo, existe cierta confusión entre este proceso y los procesos de Gestión de la Configuración o Configuration Management (CM)

Para ayudar a entender las diferencias, se debe empezar por tener en cuenta que RM es parte fundamental de la Gestión del Ciclo de Vida de las Aplicaciones, el cual involucra disciplinas y roles de varios campos de la tecnología, como son: Ingeniería software, desarrollo, SQA, Arquitectura, Operaciones IT, entre otros, mientras que por otro lado, el proceso de Gestión de la Configuración es exclusivo de IT, y está encaminado a establecer y mantener la consistencia de los entornos de operación así como su funcionamiento y rendimiento.

Por tanto, debemos distinguir que RM está orientado a gestionar el despliegue del software y CM persigue gestionar las aplicaciones y sus entornos de manera que se garantice su debido funcionamiento.

Release Management como parte de DevOps

Habiendo establecido qué es RM, podemos ver que dicho proceso de gestión involucra tanto a los equipos de desarrollo software, como a los gestores de los entornos de operación de dicho software. Es claro, entonces, que RM forma parte fundamental de la estrategia que busca mejorar el desarrollo software embarcando como parte integral de los equipos de proyecto a los roles de operaciones. Esta estrategia está representada por el concepto de DevOps.

En DevOps se busca establecer mecanismos y procedimientos de comunicación y colaboración entre los equipos de Desarrollo, QA e IT de manera que permitan mejorar los procesos de producción de software mediante la cooperación de dichos equipos.

Por tanto, RM es precisamente parte fundamental de dicha estrategia de DevOps.

Release Management como parte del Desarrollo Agile

En los últimos años, los modelos de desarrollo software basados en los conceptos y prácticas Agile o ágiles han ganado una presencia importante en el panorama actual.

El objetivo fundamental de las metodologías Agile que es mejorar las forma de producir software se fundamentan en la colaboración entre los diferentes miembros de los equipos de desarrollo software. Es aquí donde RM como parte de la estrategia de DevOps tiene su encaje.

Objetivos de Release Management

El proceso de RM permite, una vez establecidos los mecanismos de despliegue del software entre los equipos de desarrollo y de operaciones, garantizar, mediante la automatización, que dichos procesos de despliegue se realizan siempre de la misma manera y con unos resultados esperables y medibles.

Disponer de unos procesos de despliegue optimizados, podría permitir en última instancia, el realizar una entrega continua en los proyectos software de manera que el time-to-market de dicho software se vería reducido al máximo, permitiendo maximizar el aporte de valor del mismo.

Beneficios esperados con Release Management

La organización que establezca un proceso de Release Managment adecuado podría obtener estos beneficios:

  • Reducción del time-to-market en los proyectos software al reducir la puesta en funcionamiento del software en sus entornos de explotación
  • Reducción del esfuerzo dedicado a desplegar los sistemas software a los diferentes entornos de operación puesto que RM ayudará a automatizar gran parte del proceso
  • Aumento de la calidad del software al dotar a los equipos de desarrollo software de recursos ágiles y flexibles para poder probar y corregir el software cuanto antes, especialmente si los entornos de pruebas e integración contemplan escenarios de aprovisionamiento automatizado en modelos de nube (cloud) pública.
  • Incremento de la colaboración y la productividad de los equipos de desarrollo software y de operaciones al automatizar las tareas repetitivas y/o complejas, y disponer de un conjunto de herramientas y procesos comunes.
  • Predictibilidad en los procesos de puesta en funcionamiento de los sistemas software al disponer de información y herramientas que permiten medir, estimar y mejorar dicho proceso.

Relase Management con Visual Studio 2013

La solución ALM que proporciona Visual Studio 2013 incorpora soporte para implementar en las organizaciones procesos de Release Management.

En su última versión Visual Studio incorpora VS Release Management Server, quien de manera integrada con Team Foundation Server, puede automatizar el despliegue de las Builds realizadas por TFS a los entornos de Desarrollo, QA y Operación, entre otros.

 

Con el cliente Visual Studio Release Management Client se pueden definir los diferentes entornos de los que se desean gestionar los despliegues de una manera gráfica y amigable.

El cliente de Visual Studio Release Management se incluye con las ediciones Ultimate, Premium, Test Profesional con MSDN y con MSDN Platforms.

Con el cliente de RM, se pueden visualizar los diferentes pipelines de despliegue, y gestionar el tráfico de aplicaciones a desplegar en cada uno de los entornos y sus servidores asociados.

Para que una máquina servidora pueda ser parte de un proceso de despliegue debe tener instalado un agente Visual Studio Release Management Agent, que está disponible en 2 ediciones:

  • Visual Studio Deployment Agent Standard, que permite controlar máquinas servidoras físicas con 2 procesadores y hasta 2 máquinas virtuales sobre ellas, o hasta 2 máquinas virtuales en entornos de nube, tanto pública como privada. Esta edición del agente es la opción recomendada en escenarios con Windows Server Standard con poca o ninguna densidad de virtualización.
  • Visual Studio Deployment Agent Datacenter, que permite controlar máquinas servidoras físicas con hasta 2 procesadores e ilimitadas máquinas virtuales sobre ellas, o hasta 8 máquinas virtuales en entornos de nube, tanto pública como privada. Esta edición del agente es la opción recomendada en escenarios con Windows Server Datacenter con alta densidad de virtualización.

Los usuarios involucrados en la aprobación o verficación de los procesos de despliegue, no precisan licenciar ninguna CAL específica y disponen de un interfaz web para la administración de dichos despliegues.

Como se ha comentado anteriormente, Visual Studio Release Management Server puede ser incluido como parte de los procesos de Build gestionados por TFS de manera que como parte final de una Build, se puede invocar a sus capacidades para instanciar un procedimiento de despliegue.

¿Por dónde empezar con Release Management?

Hemos visto que RM no es un proceso que se implante de manera inmediata, sino que se basa en personas y procesos. Por lo tanto, para la mayoría de las organizaciones tiene sentido empezar identificando qué habilidades y tareas relacionadas son de las que disponen de partida.

Después conviene identificar y priorizar las metas que se desean alcanzar al implantar RM dentro de la organización.

Adicionalmente, conviene, como en todos los procesos de cambio en las organizaciones, localizar un sponsor del nivel adecuado dentro de la organización que habilite el proceso de cambio, y además, se debe contar con la ayuda de un experto sobre la materia. Además es importante focalizarse en los logros obtenidos y establecer un plan de comunicación y formación interna adecuado.

Es importante ser persistente en el cambio, y esperar cambios efectivos solamente después de cierto tiempo de que los nuevos procesos estén en marcha.

Conclusiones

Release Management permite definir procesos y mecanismos que permitirán a las organizaciones gestionar el despliegue de sus proyectos software de manera fiable y automatizada, ayudándoles a ganar en eficiencia y fiabilidad al tiempo que permite reducir los recursos necesarios para esas actividades. Estas mejoras permitirán obtener mejoras en la calidad de software producido, al tiempo que reducirán el time-to-market de los productos, dotando de mayor competitividad a la actividad de la empresa.

Visual Studio Release Management es la solución de Release Management de Microsoft que permite extender las capacidades ALM de la solución de Visual Studio de una manera integrada y homogénea  dotando a los equipos de desarrollo y operaciones de un conjunto de herramientas y el soporte metodológico que les permita colaborar y cooperar para obtener los objetivos comunes de aumento de la calidad del software, reducción de los costes y el tiempo de puesta en producción del software.