Da gusto encontrar en el radar tecnológico que publica ToughtWorks cada seis meses, dos plataformas que estamos utilizando en nuestros proyectos de desarrollo.
Algunas definiciones antes de empezar
Primero indiquemos que por plataformas se entiende básicamente “Cosas sobre las que construimos software, como tecnologías móviles como Android, plataformas virtuales como la JVM, o tipos de plataformas genéricas como las nubes híbridas”.
Las plataformas se dividen a su vez en cuatro Anillos: Adoptar, Prueba, Evaluar y Resistir. Las plataformas de las que hablaremos hoy se encuentran dentro del anillo Prueba, que no es más que plataformas “que están listas para su uso, pero no tan probadas como las del anillo de adopción. Por ello, pensamos que la mayoría de las organizaciones deberían utilizarlos a modo de prueba, para decidir si deben formar parte de su conjunto de herramientas.”
Por ser de naturaleza investigativa en THS siempre adoptamos herramientas cuyo ciclo de madurez garantizan una ventaja tecnológica, aunque no hayan sido adoptados todavía como estándares de la industria. El riesgo vale el esfuerzo y el aprendizaje que conlleva.
Cabe señalar además que en este radar no hay plataformas que alcancen el anillo de adoptar ni a las cuales se deba resistir.
Plataformas en uso en THS
En THS estamos usando habitualmente Azure Devops y empezamos a usar las plantillas de Azure Pipelines, ambas extremadamente útiles durante el ciclo de desarrollo de las aplicaciones y ambas entre las plataformas se deben probar.
Ambas plataformas apoyan a optimizar el desarrollo utilizando DevOps, logrando que las empresas se centren más en el desarrollo que en la infraestructura que se necesita para habilitar proyectos DevOps. Y para muestra un botón en el siguiente gráfico se ve la productividad en DevOps de los equipos eficientes, y los que no los son. unos se dedican a innovar, y bueno, los otros se dedican en lograr que no se caigan las cosas.
En Que me ayuda Azure DevOps
La herramienta Azure DevOps ayuda, principalmente, en 4 frentes:
- La planificación y seguimiento del desarrollo
- La administración del código fuente.
- El despliegue del código en distintos amientes
- Administración y ejecución de planes de pruebas.
La parte más dulce de AZURE DevOps es que las primeras cinco cuentas son gratuitas y no estás supeditadas a ningún tipo de licenciamiento. Además, los que tienen desde la suscripción profesional de Visual Studio titen Azure DevOps incluido.
Ahora, entremos un poco más al detalle de cada una de estas funcionalidades.
Planificación y seguimiento del desarrollo
Azure Boards, permite que cualquier equipo pueda; Planificar, dar seguimiento y discutir el proyecto de desarrollo que están llevando a cabo. Lo pueden hacer usando distintas metodologías como; SCRUM, ágil, básico y CMMI.
Tiene todas las herramientas para asignación de tareas a los miembros del equipo, tablero Kanban para potenciar las metodologías agiles, y todo tipo de reportes y tableros para tener bajo control el estado del proyecto.
Administración del código fuente
Si bien Azure DevOps incluye un repositorio propio, es muy recomendable usar la integración con GitHub para así contar con una herramienta estándar, conocida por los desarrolladores, estable y sobre todo con miles de integraciones para todo tipo de códigos fuente y otros documentos.
Solo recordaremos que GitHub permite el uso de un repositorio local para que el desarrollador guarde en su maquina los cambios que va realizando y un repositorio central desplegado en Internet para que una vez que los cambios estén validados se suban e integren con todo el código del proyecto
Despliegue y Compilación del Código
Hablando de integración de código en el repositorio central es bueno saber que Azure DevOps cuenta con las herramientas necesarias para la creación y ejecución de Pipelines (yo los llamo flujos en español, pero nunca he sabido si está bien).
Azure Pipelines pueden servir para dos escenarios fundamentales.
El primero es para pasar justamente el código al repositorio central, incluyendo una verificación de su calidad, una posible compilación para verificar que no se rompe nada, la ejecución de pruebas unitarias para ver que responde a lo que se esperaba, y toda la mensajería necesaria para avisar que todo fue un éxito o que un desarrollador debe revisar su código.
El segundo escenario es el despliegue del código en los distintos ambientes donde reside la aplicación. Muchas organizaciones tienen al menos dos ambientes listos en Azure. El primer ambiente para realizar pruebas, sean estas funcionales, de interfaz gráfica o de calidad. Y, el segundo ambiente, es el ambiente de producción.
Pasar de un ambiente a otro conlleva no solo la copia de los distintos artefactos necesarios para la ejecución del sistema, sino también los permisos correspondientes para subir al siguiente ambiente. Todo esto quedando registrado y permitiendo una verificación posterior, en caso de un error, para ver quien actualizó que y cuando lo realizó.
Planes y ejecución de Pruebas
básicamente se pueden realizar dos tipos principales de pruebas; las pruebas unitarias que revisan que el código no falla en los escenarios previstos, y una prueba de carga masiva para ver que el código no se rompe cuando entran miles de usuarios al sistema, o se deben procesar miles de transacciones.
Para ambos Azure Devops puede montar un entorno virtual para desplegar y ejecutar el código. Este entorno puede estar en la nube, o ser parte de la infraestructura propia.
Generalmente desarrollar, desplegar, ejecutar y administrar las pruebas ha sido un gran problema, con las herramientas incluidas en Azure DevOps se cubren la mayoría de los escenarios. Se pueden ejecutar automáticamente las pruebas unitarias, por ejemplo, a la hora del despliegue en los ambientes de producción para asegurar que se está pasando una versión probada. También se pueden correr pruebas de las aplicaciones móviles seleccionando distintos tipos de dispositivos y verificando que funciona correctamente en todos.
Eso sí, se debe saber que montar el ambiente de prueba generalmente implica costos más allá de las suscripciones gratuitas he incluidas. Sobre todo, para las pruebas de esfuerzo que impliquen grandes cantidades de usuarios al mismo tiempo.
Conclusión
Azure DevOps es una herramienta esencial para el desarrollo de aplicaciones sólidas, y cuenta con todas las herramientas necesarias para implementar una metodología de Desarrollo y operaciones consistente.