Desarrollo y Pruebas en Microsoft Azure: bueno para el negocio, bueno para ti (por Aurelio Porras)

NOTA: Este articulo ha sido escrito por Aurelio Porras García (aureliop@microsoft.com)

Desde Microsoft llevamos ya más de dos años hablando a empresas y organismos públicos sobre las bondades de la computación en la nube en general y de los servicios de la nube de Microsoft en particular. Y en el último año hemos visto cómo la nube de Microsoft ha obtenido un buen montón de reconocimientos y certificaciones sobre seguridad, privacidad y protección de datos y cumplimiento de normativas y estándares, que deberían disipar las dudas de las organizaciones españolas para lanzarse a usarla. Al fin y al cabo, Microsoft es
el primer y único (a día de hoy) proveedor de servicios en la nube que ha superado los rigurosos requisitos de la Unión Europea y de la Agencia Española de Protección de Datos sobre el almacenamiento y protección de los datos.

Aun así sigue habiendo reticencias para usar la nube en general, especialmente en las organizaciones tradicionales, razones que no son subjetivas precisamente: las inversiones en hardware y software hay que amortizarlas; los contratos de outsourcing siguen vigentes; los procedimientos y procesos de TI tienen que adaptarse a la nueva realidad de la nube; son algunos impedimentos que hemos oído y que no tienen una resolución inmediata. Pero a pesar de estas trabas, hay escenarios por los que se pueden empezar ya mismo si realmente se quiere. Uno de ellos es el escenario de Desarrollo y Pruebas en la nube. Es aplicable a prácticamente cualquier organización, ayuda a las áreas de TI a entender el uso de la nube y es el escenario más extendido a nivel mundial. Y no es solo factible, sino que proporciona la agilidad y el ahorro de costes que demanda el negocio, difícilmente comparables a escenarios de Desarrollo y Pruebas en hardware dedicado o nubes privadas. Ahora las organizaciones solo tienen que aplicarlo. Vamos a ver cómo.

Escenario de desarrollo y pruebas en la nube

Es un escenario muy común que aplica a cualquier organización que apoye sus procesos de negocio en aplicaciones de software (¿a día de hoy hay alguna que no?), independientemente de que disponga de un área de Desarrollo como tal o que el desarrollo lo tenga  subcontratado a un tercero. Al fin y al cabo las aplicaciones no solo hay que desarrollarlas, sino que hay que probarlas antes de pasar a explotación, y hay que mantenerlas y evolucionarlas en el tiempo para ajustarlas a las necesidades del negocio. Cualquier
organización suele tener más o menos definido un proceso de gestión del ciclo de vida de las aplicaciones y en mayor o menor medida disponen de unos entornos hardware y software, llamémoslos entornos de Desarrollo, de Integración, de Calidad y de Preproducción, donde las aplicaciones se desarrollan y se prueban antes de pasar al entorno de Producción.

Pues bien, esos entornos de desarrollo y pruebas e incluso el proceso de gestión del ciclo de vida de las aplicaciones, se pueden subir a Microsoft Azure, facilitando al área de TI las sempiternas exigencias de negocio: el ahorro de costes y la agilidad de adaptación al negocio.

Puestos de desarrolladores y probadores en la nube

El caso más evidente e inmediato es subir a la nube los puestos de desarrolladores y probadores. Aplica a organizaciones que proporcionan el puesto a su fuerza de desarrollo y pruebas de aplicaciones, sean internos o subcontratados, y a organizaciones que se dedican a desarrollar o probar aplicaciones para terceros. En ambos casos, la organización facilita el puesto, con su hardware y software, a la persona que desarrolla o prueba.

Si el puesto del desarrollador o del probador fuera una máquina virtual de Microsoft Azure, tanto la organización que lo proporcionara como la persona que lo usara se beneficiarían, en comparación con un puesto físico e incluso con un puesto virtual en las instalaciones de la organización, por la sensación de recursos hardware ilimitados y de rapidez en el aprovisionamiento que proporciona una nube pública como Microsoft Azure. Y es independiente de la plataforma y herramientas que se instalen en el puesto, ya sea un puesto Windows con Visual Studio o un puesto Linux con Eclipse.

La organización podría estandarizar los puestos virtuales de sus desarrolladores y probadores y aprovisionarlos en cuestión de minutos; podría definir diferentes perfiles de puestos virtuales en función del proyecto, de forma que el puesto tuviera el hardware y el software necesario y suficiente para ese proyecto específico.

Por su parte, la persona podría acceder al puesto virtual desde cualquier lugar y a través de cualquier dispositivo con conexión de escritorio remoto; una tableta sería suficiente; la persona que estuviera implicada en varios proyectos podría disponer de varios puestos virtuales. Y si la persona usa Visual Studio, los ajustes del entorno de desarrollo (IDE), que también se almacenan en la nube, se sincronizan entre instancias de Visual Studio para que el entorno de desarrollo (IDE) tenga el mismo aspecto y el usuario se sienta más cómodo.

Con todo esto, la organización solo pagaría por los puestos virtuales que se han usado realmente y solo durante el tiempo que se han usado, aprovechándose del pago por uso inherente a la nube pública; la organización pueda asumir más fácilmente picos de subcontratación de fuerza de desarrollo o pruebas proporcionando más puestos rápidamente y eliminándolos una vez se hayan superado esos picos. Y la organización podría incluso planificar en Microsoft Azure el uso de los puestos virtuales, reduciendo sus ventanas de disponibilidad; así,
en lugar de una disponibilidad de 24x7 que supone un puesto físico, se podría reducir a una de 12x5, posibilitando el acceso al puesto virtual, por ejemplo, sólo de 8am a 8pm de lunes a viernes, controlando aún más el consumo y reduciendo la factura.

Entornos de Desarrollo y Pruebas de aplicaciones en la nube

Es habitual que los proyectos para el desarrollo de nuevas aplicaciones o para el mantenimiento de las existentes tengan presupuestos limitados para hardware y software, lo que supone una limitación importante a la hora de montar los entornos de desarrollo y pruebas necesarios. Y también es habitual que las organizaciones optimicen sus inversiones, compartiendo hardware y software para los entornos de pruebas de diferentes aplicaciones, ofreciendo colas y ventanas de uso para cada proyecto. En ambos casos, lo que
acaba comprometiéndose al final es la deseada agilidad en el desarrollo de las aplicaciones, demandada por negocio.

En la misma línea que los puestos de desarrolladores y probadores, los entornos de ejecución donde se desarrollan y se prueban las aplicaciones también son susceptibles de aprovecharse de la nube. Los entornos de Desarrollo, de Integración, de Calidad y de Preproducción de una aplicación se pueden subir a la nube, independientemente de la naturaleza de la aplicación, use o no servicios de la nube, e independientemente de la plataforma y tecnologías que utilice, ya sea .Net sobre plataforma Microsoft o Java sobre plataforma Linux. Microsoft Azure proporciona todo lo necesario para montar esos entornos utilizando máquinas virtuales y conectándolos si así se requiere con los recursos propios de la organización mediante redes virtuales o buses de servicios.

Además, Microsoft Azure permite guardar estados de las máquinas virtuales, para que levantar un entorno de pruebas sea rápido y el entorno esté listo para usarse, pudiéndose desechar ese entorno al finalizar las pruebas. Si se dispone de los entornos de pruebas necesarios para una aplicación en los momentos oportunos, la aplicación se puede empezar a probar antes, se puede probar más a menudo y mejor, lo que impulsa la agilidad en el desarrollo y mejora la calidad final de la aplicación cuando se pase a Producción. Y cuando se habla de pruebas en general, se incluye la posibilidad de realizar pruebas de escalabilidad de una aplicación, montando el entorno de Preproducción idéntico al de Producción, para que estas pruebas tengan sentido y sean lo más realistas posibles. Esto unido a la posibilidad de lanzar la carga de las pruebas de escalabilidad desde Microsoft Azure a través su servicio Load Test Service que se menciona más adelante, sitúa Microsoft Azure como una solución completa para las pruebas de escalabilidad de aplicaciones.

Y, obviamente, subir los entornos de desarrollo y pruebas a Microsoft Azure es efectivo en costes; solo se paga por lo que se usa y si los entornos solo se mantienen disponibles cuando es oportuno, el ahorro puede llegar a ser considerable comparado con la adquisición de hardware dedicado, más aún si se trata de entornos de Preproducción.

Finalmente y en relación al ahorro de costes, si los entornos de desarrollo y pruebas están basados en plataforma Microsoft, es muy aconsejable tener en cuenta el uso de suscripciones MSDN para el licenciamiento de estos entornos, en comparación al uso de licencias productivas; la suscripción MSDN se paga por usuario, mientras que la licencia productiva se paga por instalación. Basta con adquirir suscripciones MSDN para los desarrolladores, los probadores y los administradores de sistemas que manipulan y hacen uso de
los entornos de desarrollo y pruebas para que estos entornos estén correctamente licenciados sin coste adicional; y se pueden licenciar ilimitados entornos de desarrollo y pruebas. Si se comparan los costes de las suscripciones MSDN con los costes de las licencias productivas, la sorpresa puede ser gratificante.

 Gestión del ciclo de vida de las aplicaciones en la nube

La última pieza del escenario de Desarrollo y Pruebas susceptible de mover a la nube es la gestión del ciclo de vida de las aplicaciones (ALM). Y hay situaciones en los que puede mucho tener sentido, por ejemplo: cuando una organización pretende externalizar el desarrollo de aplicaciones a un tercero y las políticas de seguridad corporativas impiden que el tercero pueda acceder a las herramientas ALM de la organización; o bien, cuando una organización pretende abordar proyectos de desarrollo, pero no desea que la gestión del
ciclo de vida de las aplicaciones le suponga adquirir nueva infraestructura que tenga que administrar. En estos casos utilizar herramientas ALM en la nube encaja perfectamente y la solución ALM de Microsoft ofrece esta posibilidad.

Hay dos modalidades para usar la solución ALM de Microsoft en la nube: la primera es desplegar el servidor ALM, Team Foundation Server (TFS), en máquinas virtuales de Microsoft Azure, opción soportada por Microsoft y que se podría denominar Team Foundation Server en infraestructura como servicio (TFS en IaaS, Infrastructure-as-a-Service). La segunda es usar el servicio ALM de Microsoft Azure llamado Visual Studio Online (VSO), que es básicamente una solución SaaS (Software-as-a-Service) de Microsoft como lo puede ser Exchange Online o Dynamics CRM Online. El servidor TFS y el servicio VSO comparten gran parte del código, aunque a día de hoy la funcionalidad de TFS es superior a la de VSO, concretamente en lo que concierne a la adaptación de la herramienta a los procesos de la organización y en la explotación de la información a través de informes y cuadros de mando. Por otro lado, VSO es un servicio mantenido y administrado por Microsoft, mientras que TFS en IaaS exige que la organización que lo use se encargue de su administración como un servidor más de su entorno productivo (monitorización, copias de respaldo, actualizaciones, etc.). Es por lo tanto decisión de la organización escoger la modalidad que más se ajuste a sus requerimientos.

Independientemente de si se escoge TFS en IaaS o VSO, hay tres características de Visual Studio Online que pueden resultar muy interesantes de usar en cualquier caso. El primero es el servicio de construcción automatizada en la nube (Build Service) que facilita lanzar builds en la nube y se paga por minuto de compilación al mes; una organización que tenga congestionado sus servicios de build y que no quiera adquirir infraestructura adicional para ampliar su capacidad, o simplemente que no quiera adquirir hardware dedicado para los servicios de build, puede aprovecharse de este servicio en la nube que se paga por uso y no requiere administración de la infraestructura. El segundo es el servicio de agentes de pruebas de carga en la nube (Load Test Service) que permite generar la carga desde la nube para realizar pruebas de escalabilidad de aplicaciones y se paga por minuto de usuario virtual al mes; facilita que se ejecuten este tipo de pruebas más a menudo, sin necesidad de aprovisionar el hardware necesario ni de configurar el sistema de agentes. Y el tercero es el servicio de monitorización de aplicaciones en la nube (Application Insights), que proporciona información relativa a la disponibilidad de la aplicación y a los errores de ejecución que se puedan estar produciendo en la aplicación, y además extrae patrones de uso de la aplicación que permitirá a la organización focalizar las inversiones en la evolución de la misma.

En definitiva, la combinación de Visual Studio y Microsoft Azure ofrece una solución ALM en la nube muy completa para cualquier organización.

Como hemos visto, el escenario de desarrollo y pruebas en Microsoft Azure no es solo factible, sino que proporciona la agilidad y el ahorro de costes que demanda el negocio, difícilmente comparables a escenarios de desarrollo y pruebas en hardware dedicado o nubes privadas. Ahora las organizaciones solo tienen que aplicarlo.