camp_avanade_1

Primer Camp del curso 2017/2018 por parte del TechClub Tajamar orientado a Desarrollo, aunque en este caso comparte una considerable importancia junto con el área de Infraestructuras. Juan de Miguel Veira y Eduardo del Pozo impartieron el Camp por parte de la empresa Avanade, siendo ambos especialistas en DevOps, Scrum Master y Agile Coach.

Comienzo e introducción

La jornada del sábado 3 de febrero comenzó dejando claro que éste iba a ser un Camp algo atípico, debido a que englobaba tanto a Desarrollo como Infraestructuras (lo cual explicaba el elevado aforo que hubo). DevOps es una metodología camp_avanade_2 que viene a atender las crecientes demandas de producción de la forma más rápida y eficiente posible. Esto se consigue poniendo el foco sobre el flujo de trabajo, sobre todo entre diferentes departamentos, priorizando siempre la calidad del producto final.

Por lo tanto, DevOps no es “nada más” que una metodología para la creación de software, basándose y consiguiendo la integración entre desarrolladores y administradores, lo que a su vez permite elaborar software de forma más rápida, eficiente y de mayor calidad, y reducir la deuda técnica.

 

Visual Studio Team Services (VSTS)

Ya con los dientes largos, el día prometía. Ahora fue el momento de conocer una de las herramientas con las que Microsoft trata de convencernos para “unirnos” a DevOps. Este software trata de servir a modo de centro de operaciones tanto para el departamento de Desarrollo, Infraestructura y QA (Quality Assurance o Control de Calidad). Como puede verse, nos tenían en su bolsillo con tan buena perspectiva.

camp_avanade_3

Tradicionalmente han existido y existirán muchas opciones para abarcar el ciclo de vida y entrega de un producto: entornos de desarrollo, sistemas de control de versiones, gestores de tareas, virtualización, herramientas de despliegue, etc. Esto tiene una gran capacidad explicativa para el hecho de que el concepto de Time to Market sea aún considerado elevado por los clientes, pese a los esfuerzos de los departamentos de IT.

VSTS engloba todos los paquetes que tradicionalmente se están usando por separado en una sola herramienta, aunque también permite para determinados aspectos integrar otros elementos (ya sean open source como Git o software propietario como la nube Amazon Web Services).

camp_avanade_4

Esta infraestructura como servicio contiene diferentes pestañas, presentando en cada una de ellas grupos de funcionalidades diferentes. Tiene una ventana principal con resúmenes y datos relevantes sobre nuestro proyecto, una pestaña de control de versiones, pruebas y test, compilaciones y despliegues, y una wiki donde poder documentar todo.

 

Azure

Para poder explotar al máximo las opciones de VSTS, es recomendable utilizar Azure, la nube de Microsoft. Azure es una plataforma como servicio, permitiendo alojar toda la infraestructura de negocio virtualizada. Esto anterior supone un gran ahorro de dinero y recursos.

Al ser un servicio externo, ofrece flexibilidad inmediata según la suscripción que decidamos tener, pudiendo contratar o dar de baja unos elementos u otros. Aquí, los compañeros Juan y Eduardo nos estuvieron haciendo una visita guiada por las diferentes opciones de Azure, para ir familiarizándonos con sus opciones.

camp_avanade_5

 

Integración Azure – VSTS

Desde la web de Visual Studio, nos creamos la cuenta de VSTS. Accedemos a la opción de seguridad para creamos una herramienta que utilizamos para preparar el código, la integración continua y el despliegue continuo, incluyéndola después en nuestro proyecto de prueba de VSTS.

Ahora es el turno de damos de alta en el portal de Azure. En el apartado Cost Management obtenemos información sobre nuestras suscripciones. Como el propósito de este Camp es educativo, se recomiendan a los que no tengan suscripción de Azure probar con la modalidad gratuita.

La web https://vstsdemogenerator.azurewebsites.net/ nos permite insertar la herramienta que creamos antes en nuestra cuenta de VSTS en nuestro proyecto (mediante un token) y seleccionar una plantilla (MyHealthClinic) para obtener datos de demostración.

camp_avanade_6

 

Trasteando con la integración y despliegues continuos

Según nos comenta Juan, al crearnos un proyecto de Visual Studio, por defecto el archivo .gitignore viene vacío, por lo que antes de empezar a definir los parámetros de integración de nuestro proyecto de demostración, debemos completar este archivo con el código que nos ofrece GitHub. Esto es otro ejemplo acerca de que VSTS no se cierra a software de terceros, ya que es compatible con otras herramientas por si el usuario se siente más cómodo trabajando con ellas.

Hacemos un comentario y un commit para comprobar que todo funciona, y además dar un repaso a las opciones sobre Pipelines de VSTS (también aquí se ofrece integración con herramientas de terceros como BitBucket entre otros).

En el apartado Build de nuestro proyecto VSTS, podemos definir los pasos que se llevarán a cabo en cada commit que tenga lugar. Añadimos una nueva build para nuestro proyecto de demostración MyHealthClinic/Web. Se definen diferentes etapas, como son la la recuperación de archivos, su compilación y/o despliegue. Por ejemplo, nosotros incluimos antes de la compilación la instalación de paquetes genéricos NPM, Bower y gulp para facilitar el trabajo a desarrolladores. Todos estos pasos se hacen a través de una interfaz gráfica bastante intuitiva, por lo que es sencillo definir la configuración deseada.

También definimos que para cada proceso de commit tenga lugar una serie de pruebas sobre nuestro software. Esto garantiza que cuando el equipo de Infraestructuras tenga que trabajar con el resultado que han logrado en el departamento de Desarrollo, este proyecto funcione (aliviando también carga a QA).

Guardamos la configuración de nuestra Build y la encolamos. Al ser una plataforma como servicio, todos los procesos tienen lugar en servidores externos a nosotros, por lo que podremos seguir trabajando (o tomarnos un café) mientras se llevan a cabo las pruebas y procesos de integración continua.
camp_avanade_7

Ahora, antes de terminar y para animar un poco a los asistentes del apartado de sistemas, es el momento de definir el despliegue continuo que nos ofrece VSTS junto con la nube de Azure. Como puede verse en la imagen anterior, VSTS es una especie de “todo en uno” que permite automatizar procesos que suelen llevarse a cabo de forma independiente.

Debemos crear en VSTS un nuevo servicio Azure Resource Manager para conectar nuestro proyecto con Azure. Podemos definir el despliegue sobre los entornos que queramos. Aclarar que los desplieguen se realizan sobre los artefactos o resultados de las integraciones continuas definidas anteriormente.

Como viene siendo ya la norma, también aquí nos enseñan que todo es personalizable y a demanda según las necesidades del usuario. Puedes definir diferentes variables para que, por ejemplo, las cadenas de conexión a bases de datos cambien según el entorno en el que ha sido desplegado el artefacto.

En el despliegue en Azure, se pueden definir plantillas. Como requisitos para los despliegues, hay que definir el entorno (desarrollo, producción, etc.) y el artefacto. También se pueden definir las condiciones para hacer despliegues entre diferentes entornos. Por ejemplo: con cada build exitosa hacer despliegue a DEV, con cada visto bueno del jefe de desarrollo hacer despliegue a QA, etc.

 

Conclusión

¡Fin de la jornada! Menudo Camp, sin duda ha sido un evento en el cual se han mostrado muchas herramientas, viendo las posibilidades que ofrecen herramientas como VSTS y Azure orientado a la metodología DevOps.

El día ha sido muy provechoso debido sobre todo a dos grandes aspectos: entender de primera mano qué es DevOps, y aprender las bases y manejar VSTS.

Sobre DevOps, Martin Fowler (reconocido arquitecto de software) definió el concepto de integración continua como aquel código en sitio único que cumple con ciertos criterios de calidad definidos, y afirmó que la integración continua era necesaria para el despliegue continuo (construcción de software para que esté siempre en un estado en que pueda ser puesto en producción).

VSTS nos permite aplicar esta metodología de forma fácil y flexible, tanto a desarrolladores como a administradores de sistemas.

camp_avanade_8

Además, Eduardo y Juan nos dejaron como “regalo” la dirección de los labs de Visual Studio donde poder prácticas y continuar formándose, además de poder replicar lo hecho en la jornada.

Según mi punto de vista, ha sido un magnífico Camp. Estos de Avanade saben lo que dicen, y también cómo lo dicen. Es un lujo poder contar con dos ponentes que se dedican también a formación, transmiten de forma increíble tantos conocimientos, ahora podemos decir que conocemos un poco en que consiste DevOps, además de poder presumir de haber hecho integraciones y despliegues continuos con VSTS. Espero poder repetir en breve, en @TechClubTajamar vienen Camps muy interesantes en este 2018. ¡Hasta la próxima!

camp_avanade_9

 

Autor: José Ramón Landriz Lara

Alumno Microsoft MCSA Web Applications + Microsoft MCSD App Builder + Xamarin

Coordinador Tech Club Tajamar

Año académico: 2017-2018

Linkedin: José Ramón Landriz