Cómo no romper los límites, cómo crear una buena arquitectura y cómo hacer un buen mantenimiento

Orquestando proyectos: VSTS, Slack, SonarQube

header_compare@2x-2-1024x535

 

Cuando se está desarrollando una aplicación, y durante todo el ciclo de vida de la misma, se plantean una serie de puntos muy importantes como son: conseguir un producto libre de errores, mediante un desarrollo rápido y con una buena comunicación interna del equipo.

Para conseguir todo esto vamos a hablar sobre Visual Studio Team Services, o VSTS, que proporciona mecanismos para organizar proyectos, el código desarrollado, automatizar compilaciones, Test y despliegues en distintos entornos, Slack como herramienta de comunicación y SonarQube para asegurar que el código resultante sea más limpio y tenga menos errores en el futuro.

Visual Studio Team Services

Comenzamos repasando Visual Studio Team Services (a partir de ahora  VSTS), la herramienta por excelencia de Microsoft para gestiona todas las fases del ciclo de vida.

Engloba varias «subproductos». Uno de ellos es la gestión de código fuente, permitiendo trabajar varias personas en el mismo proyecto sin problemas y facilitando la clara separación de código desplegado en distintos entornos, gracias a la funcionalidad de las ramas y de combinar el código entre ellas.

 

VSTS también permite plasmar las tareas, en agrupaciones por áreas e interaciones, y casos de usuario, que se deberán completar para llevar a cabo un proyecto, pudiendo describirlas, fijarles una prioridad y esfuerzo, asignarlas a usuarios que podrán cambiarlas de estado durante el progreso de la tarea, y siempre guardando un histórico de todos cambios sufridos.

Otra ventaja de describir estas tareas y bugs es la de poder asociar conjuntos de cambios del código a éstos.

Otro de los grandes beneficios que ofrece VSTS, son las definiciones de compilación, o “Build definitions”. Atras quedaron aquellos tiempos de las Build XAML donde añadir una modificación era una tarea muy compleja y dificil.

Ahora las  definiciones de compilación permiten realizar una serie de acciones secuenciales, pudiendo tener en cuenta o no el estado resultante de la tarea anterior, y configurarlas con disparadores/triggers en función de eventos sobre el proyecto o en base a una programación establecida. Con estas definiciones se podría conseguir, por ejemplo, que con cada conjunto de cambios subido al repositorio se comprobara que el código compila sin errores y que pase los test desarrollados, que todas las noches se vuelva a comprobar la integridad de los desarrollos y que se desplieguen en un entorno de integración, o que cuando se suban cambios en una determinada rama se despliegue esa actualización en un determinado entorno.

Para trabajar con las definiciones de compilación se hace desde la pestaña Build & Release, donde se almacenan todas las definiciones creadas y se pueden configurar agregando, o quitando, tareas desde el conjunto de disponibles:

task

Entre las acciones disponibles se pueden encontrar de distintos tipos: compilación, test, utilidades, generación de paquetes y despliegues. Dentro de estas categorías se encuentran además interacciones con otros sistemas como puede ser Azure, NuGet, Sonar, … o ejecutar acciones npm, Grunt, Gulp, … Este listado de tareas es extensible en el Marketplace de VSTS.
Una característica de VSTS que ayuda a conocer el estado de las definiciones de compilación y de mucho más, son las notificaciones configurables. Éstas permiten conocer desde cuándo se ha creado, editado o borrado un elemento hasta crear avisos a partir de subidas de conjuntos de cambios de código o ejecuciones de definiciones de compilación.

Esta configuración se realiza desde la opción Notificaciones del menú de usuario:

profile

A continuación, se pueden crear y configurar las notificaciones necesarias:

4

Por ejemplo, se puede configurar que se envíe una notificación cuando una definición de compilación lanzada por mí en un determinado proyecto termine:

2

Otra característica de VSTS que permite tener un gran control de los despliegues de las actualizaciones entre los distintos entornos es la Gestión de despliegues, o Release Management.

Esta funcionalidad permite, a partir de la definición de los entornos, aplicar a cada uno de ellos unos pasos como, por ejemplo, despliegues en aplicaciones web de Azure, ejecución de Test predefinidos, lanzar pruebas de rendimiento, gestionar los Slot de las aplicaciones web de Azure, etc. La Gestión de despliegues se encuentra en la sección Releases dentro del menú Build & Release:

3

Inicialmente se muestra un resumen de los despliegues en curso o finalizados, y también se puede acceder a la edición de la definición:

6

Las acciones que se pueden agregar son las que existen en las definiciones de compilación vistas anteriormente. Esos despliegues por entorno se ejecutarán en función de unos disparadores, o Triggers, en función de subidas de conjuntos de cambios, planificados en el tiempo o en base al estado de finalización de otra definición de despliegue:

7

Adicionalmente, por cada entorno, se pueden definir una serie de políticas de retención sobre los entornos:

8

Slack

 

Slack es una herramienta muy sencilla, pero a la vez potente, para crear un canal de comunicación entre los integrantes de un proyecto, permitiendo compartir comentarios, imágenes, ficheros, etc.

Otra de las fortalezas de Slack es su facilidad para integrarse con otros sistemas, incluyendo VSTS. Con un par de sencillos pasos se puede configurar Slack para que muestre los resultados de compilaciones, u otros eventos de VSTS, conectándose mediante Webhooks. Tanto el tipo de evento a registrar como la personalización de la imagen y nombre que se quiere ver en el canal es posible.
Para agregar una integración a cualquier canal de Slack habrá que acceder a la dirección https://mycompany.slack.com/apps y configurarlo desde ese mismo punto:

10

Como resultado obtendremos mensajes del siguiente tipo:

11

Donde la integración con VSTS es máxima al obtener también enlaces a las definiciones de compilación lanzadas, y a sus resultados. Un aspecto a tener en cuenta es que a la hora del día a día, el exceso de información puede ocasionar el efecto contrario al que buscamos y es que en lugar de utilizar la herramienta, esta se abandone por exceso de información o bien porque las notificaciones de VSTS se mezclen con las conversaciones de los integrantes. Una de las opciones, es crear un canal de Slack solamente para estas notificaciones y otro canal para las conversaciones del equipo.

SonarQube

SonarQube permite mantener una alta calidad del código desarrollado, integrándose fácilmente con VSTS analiza el código en busca de vulnerabilidades, errores, Code Smells, etc.

Entre las características del producto se encuentra el ayudar a escribir un código más limpio, detectar errores, o posibles puntos de error, que no se consiguen encontrar en la fase de compilación, es capaz de analizar más de 20 lenguajes distintos de programación (C#, JS, Java, C++, Python, …), muy fácil de integrar durante la Integración Continua mediante el uso de Webhooks o su API REST, y provee de un único punto de acceso a los resultados en un panel donde poder navegar a través de distintos gráficos por la salud del código.

La integración de SonarQube con VSTS es tan sencillo como agregar pasos a las definiciones de compilación:

20

Conclusión

Hoy en día donde cada vez más la competencia es más alta, y los equipos de desarrollo pueden tender a estar separados geográficamente, se necesitan de mecanismos para mejorar la velocidad de desarrollo, construyendo de manera más libre de errores y hacer la comunicación interna del equipo más fluida y directa.
VSTS ayuda a la organización de los proyectos, asegura obtener código limpio de errores en fase de compilación y gestiona también despliegues entre entornos.

Con Slack se consigue una comunicación rápida entre los integrantes del equipo y con SonarQube es posible detectar puntos que en tiempo de ejecución producirán errores o bajadas de rendimiento.

mm

Sobre Carlos López

Soy Ingeniero en Informática por la Universidad Politécnica de Valencia. MCSD en SharePoint Applications, Web Applications y App Builder, además de MCSA en Web Applications. Llevo desarrollando con tecnologías Microsoft más de 6 años, especialmente sobre entornos web y sobre la plataforma SharePoint, y soy colaborador del Framework Enmarcha en sus distintas modalidades. Actualmente soy Team Leader en ENCAMINA.
Esta entrada ha sido publicada en Cloud y etiquetada como , , . Enlace permanente .
ENCAMINA, piensa en colores